... em que a contagem (col)> 1
tenho uma mesa como esta:
+-----+-----+-------+
| id | fk | value |
+-----+-----+-------+
| 0 | 1 | peter |
| 1 | 1 | josh |
| 3 | 2 | marc |
| ... | ... | ... |
Eu gostaria agora de obter todas as entradas que têm mais de um valor. O resultado esperado seria:
+-----+-------+
| fk | count |
+-----+-------+
| 1 | 2 |
| ... | ... |
Tentei conseguir isso assim.
select fk, count(value) from table where count(value) > 1;
Mas a Oracle não gostou.
Então eu tentei isto...
select * from (
select fk, count(value) as cnt from table
) where cnt > 1;
...sem sucesso.
Alguma ideia? 14
Author: Marius Burz, 2009-11-26
1 answers
Utilizar a cláusula having
para comparar agregados.
Além disso, você precisa agrupar pelo que você está agregando contra para que a consulta funcione corretamente. O seguinte é um começo, mas como você está faltando um grupo por cláusula ainda não vai funcionar. O que estás a tentar contar?
select fk, count(value)
from table
group by fk
having count(value) > 1;
37
Author: Donnie, 2009-11-26 17:16:28