Heim >Datenbank >MySQL-Tutorial >Wie wähle ich die erste Zeile jeder Gruppe in einer PostgreSQL-GROUP-BY-Abfrage aus?
Wählen Sie die erste Zeile in der PostgreSQL-Gruppe „GROUP BY“ aus
In PostgreSQL ist die Auswahl der ersten Zeile jeder Gruppe in einer GROUP BY-Operation eine häufige Anforderung. Hierfür können wir die leistungsstarke DISTINCT ON
-Klausel verwenden.
<code class="language-sql">SELECT DISTINCT ON (customer) id, customer, total FROM purchases ORDER BY customer, total DESC</code>Mit der
DISTINCT ON
-Klausel können wir definieren, welche Ausdrücke als Duplikate betrachtet werden. In diesem Beispiel haben wir die Spalte customer
angegeben, was bedeutet, dass nur Zeilen mit demselben customer
-Wert als Duplikate betrachtet werden.
ORDER BY
-Klausel definiert die Reihenfolge, in der Zeilen verarbeitet werden. Die erste Zeile in jeder customer
-Gruppe ist die Zeile mit dem höchsten Gesamtwert. Wenn es mehrere Zeilen mit demselben maximalen Gesamtwert gibt, ist die Reihenfolge, in der die id
-Spalten definiert werden, ausschlaggebend.
Wichtige Punkte
DISTINCT ON
ist eine Erweiterung von PostgreSQL, mit der wir angeben können, welche Ausdrücke Duplikate ermitteln. DISTINCT ON
-Ausdruck muss mit dem führenden Ausdruck in der ORDER BY
-Klausel übereinstimmen. ORDER BY
-Klausel kann verwendet werden, um Zeilen innerhalb jeder Gruppe zu priorisieren. SELECT
-Liste aufnehmen, die nicht in einer DISTINCT ON
- oder ORDER BY
-Klausel enthalten sind. customer
, total
und id
in derselben Reihenfolge wie die Abfrage umfasst, bietet die beste Leistung. Zusätzliche Hinweise
Für Daten mit customer
hoher Spaltenkardinalität (eine kleine Anzahl von Zeilen pro Kunde) ist die DISTINCT ON
-Methode sehr effizient. Für customer
-Daten mit geringer Spaltenkardinalität (große Anzahl von Zeilen pro Kunde) können jedoch andere Abfragetechniken effizienter sein.
Das obige ist der detaillierte Inhalt vonWie wähle ich die erste Zeile jeder Gruppe in einer PostgreSQL-GROUP-BY-Abfrage aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!