Postgres: wählen Sie alle Zeilen mit einer Anzahl von einen Bereich, der größer als 1
habe ich die Tabelle speichern Produkt, Preis-Informationen, die Tabelle sieht ähnlich, (keine primary key)
no name price date
1 paper 1.99 3-23
2 paper 2.99 5-25
3 paper 1.99 5-29
4 orange 4.56 4-23
5 apple 3.43 3-11
jetzt möchte ich, um wählen Sie alle Zeilen, in denen der "name" - Feld erschien, mehr als einmal in der Tabelle. Im Grunde möchte ich meine Abfrage die ersten drei Zeilen.
Habe ich versucht:
SELECT * FROM product_price_info GROUP BY name HAVING COUNT(*) > 1
aber ich bekomme eine Fehlermeldung:
Spalte "product_price_info.kein" muss in der GROUP BY-Klausel oder eine Aggregatfunktion
InformationsquelleAutor user2628641 | 2016-04-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
InformationsquelleAutor Juan Carlos Oropeza
Versuchen Sie dies:
Können Sie die Fenster-version
COUNT
um die Bevölkerung von jedername
partition. Dann, in einer äußeren Abfrage, filter ausname
Partitionen mit einer Bevölkerung, die weniger als 2.InformationsquelleAutor Giorgos Betsos
Self-join-version, verwenden Sie eine sub-Abfrage, gibt diese Funktion den Namen ist, erscheint mehr als einmal.
Im Grunde das gleiche wie
IN
/EXISTS
Versionen, aber wahrscheinlich ein wenig schneller.InformationsquelleAutor jarlh
Fenster-Funktionen sind wirklich nett.
Für ein vollständiges Beispiel:
Gibt:
InformationsquelleAutor Jeff C Johnson