& # 8230; dove count (col) > 1
Domanda
Ho una tabella come questa:
+-----+-----+-------+
| id | fk | value |
+-----+-----+-------+
| 0 | 1 | peter |
| 1 | 1 | josh |
| 3 | 2 | marc |
| ... | ... | ... |
Vorrei ora ottenere tutte le voci che hanno più di un valore. Il risultato atteso sarebbe:
+-----+-------+
| fk | count |
+-----+-------+
| 1 | 2 |
| ... | ... |
Ho cercato di raggiungere questo obiettivo:
select fk, count(value) from table where count(value) > 1;
Ma a Oracle non è piaciuto.
Quindi ho provato questo ...
select * from (
select fk, count(value) as cnt from table
) where cnt > 1;
... senza successo.
Qualche idea?
Soluzione
Utilizza la clausola avente
per confrontare gli aggregati.
Inoltre, devi raggruppare in base a ciò che stai aggregando affinché la query funzioni correttamente. Quello che segue è un inizio, ma poiché ti manca ancora una clausola group by, non funzionerà del tutto. Cosa stai esattamente cercando di contare?
select fk, count(value)
from table
group by fk
having count(value) > 1;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow