Wählen Sie die erste Zeile in der Gruppe nach Gruppe von PostgreSQL
In Postgresql ist die Auswahl der ersten Zeile jeder Gruppe in der Gruppe nach Operation eine übliche Anforderung. Um dies zu tun, können wir die mächtige Unterscheidungsmerkmal in
Klausel verwenden.
SELECT DISTINCT ON (customer) id, customer, total
FROM purchases
ORDER BY customer, total DESC
Die Unterscheidet über
-Klausel erlaubt uns zu definieren, welche Ausdrücke als Duplikate angesehen werden. In diesem Fall geben wir die Spalte customer
an, was bedeutet, dass nur mit demselben Customer
Wert als Duplikate angesehen wird.
order by
-Klausel definiert die Reihenfolge, in der Zeilen verarbeitet werden. Die erste Zeile in jeder Gruppe Customer
wird die Zeile mit dem höchsten Gesamtwert sein. Wenn mehrere Zeilen den gleichen maximalen Gesamtwert haben, ist der entscheidende Faktor die Reihenfolge, in der die id
-Spalten definiert sind.
Schlüsselpunkte
unter
ist eine Erweiterung von PostgreSQL, die es uns ermöglicht, anzugeben, welche Ausdrücke Duplikate bestimmen. Unterscheidet über
muss mit dem führenden Ausdruck in der Klausel mit
übereinstimmen. order by
-Klausel kann verwendet werden, um die Priorität jeder Gruppe inline zu bestimmen. -Scharnei in
oder order by
in der Liste ausgewählt
. Customer
, Total
und id
in der gleichen Reihenfolge wie die Abfrage die beste Leistung liefert. zusätzliche Anweisungen
Die -Methode
ist für Daten mit einer hohen Kolumne -Kardinalität (eine kleine Anzahl von Zeilen pro Kunde) sehr effizient. Für Daten mit einer niedrigeren Kardinalität von Customer
-Spalten (große Anzahl von Zeilen pro Kunde) können andere Abfrage -Techniken effizienter sein.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3