… wo count (col)> 1

Ich habe einen Tisch wie folgt:

+-----+-----+-------+ | id | fk | value | +-----+-----+-------+ | 0 | 1 | peter | | 1 | 1 | josh | | 3 | 2 | marc | | ... | ... | ... | 

Ich möchte jetzt alle Einträge erhalten, die mehr als einen Wert haben. Das erwartete Ergebnis wäre:

 +-----+-------+ | fk | count | +-----+-------+ | 1 | 2 | | ... | ... | 

Ich habe versucht, das so zu erreichen:

 select fk, count(value) from table where count(value) > 1; 

Aber Oracle mochte es nicht.

Also habe ich das versucht …

 select * from ( select fk, count(value) as cnt from table ) where cnt > 1; 

… ohne Erfolg.

Irgendwelche Ideen?

Solutions Collecting From Web of "… wo count (col)> 1"

Verwenden Sie die Klausel having zum Vergleichen von Aggregaten.

Außerdem müssen Sie nach dem gruppieren, für das Sie aggregieren, damit die Abfrage ordnungsgemäß funktioniert. Das Folgende ist ein Anfang, aber da Sie eine Gruppierung durch eine Klausel noch immer vermissen, wird es nicht ganz funktionieren. Was genau willst du zählen?

 select fk, count(value) from table group by fk having count(value) > 1;