Erste Zeile in der gruppierten PostgreSQL-Abfrage auswählen
Wenn Sie mit gruppierten Daten arbeiten, müssen Sie häufig bestimmte Zeilen abrufen, beispielsweise die erste oder letzte Zeile in jeder Gruppe. In diesem Tutorial soll beantwortet werden, wie die erste Zeile in einer gruppierten Abfrage in PostgreSQL ausgewählt wird.
Lösung: DISTINCT ON
PostgreSQL bietet eine praktische Funktion namens DISTINCT ON, die es ermöglicht, das erste (oder letzte) Vorkommen doppelter Zeilen innerhalb einer Gruppe auszuwählen. Die Syntax lautet wie folgt:
<code class="language-sql">SELECT DISTINCT ON (DISTINCT_COLUMNS) COLUMNS FROM TABLE ORDER BY GROUPING_COLUMN, SORT_ORDER;</code>
Gilt für das angegebene Problem
Im bereitgestellten Beispiel möchten wir die erste Zeile für jeden Kunden in der Einkaufstabelle basierend auf dem höchsten Gesamtwert abrufen. Wir können DISTINCT ON verwenden, um Folgendes zu erreichen:
<code class="language-sql">SELECT DISTINCT ON (customer) id, customer, total FROM purchases ORDER BY customer, total DESC, id;</code>
Diese Abfrage gibt die gewünschten Ergebnisse aus:
FIRST(id) | customer | FIRST(total) |
---|---|---|
1 | Joe | 5 |
2 | Sally | 3 |
Erklärung
DISTINCT ON (customer)
Gibt an, dass wir die Ergebnisse nach der Kundenspalte gruppieren und verschiedene Werte auswählen möchten. ORDER BY customer, total DESC, id
Sortieren Sie die Ergebnisse zuerst nach Kunde (zur Gruppierung), dann nach Gesamtsumme in absteigender Reihenfolge (um die erste Zeile mit dem höchsten Gesamtwert zu finden) und schließlich nach ID, um Konflikte (falls vorhanden) zu lösen. Zusätzliche Hinweise
DISTINCT ON
-Klausel muss in der ORDER BY
-Klausel enthalten sein, der Standard erfordert jedoch keine zusätzliche ID-Spalte. NULLS LAST
zur ORDER BY
-Klausel hinzugefügt werden: <code class="language-sql">ORDER BY customer, total DESC NULLS LAST, id;</code>
Fazit
Die DISTINCT ON-Funktionalität in PostgreSQL bietet eine effiziente und flexible Möglichkeit, die erste (oder letzte) Zeile in einer gruppierten Abfrage auszuwählen. Durch die Nutzung dieser Funktion können Entwickler gruppierte Daten einfach analysieren und notwendige Informationen abrufen.
Das obige ist der detaillierte Inhalt vonWie wähle ich die erste Zeile in einer PostgreSQL-Gruppen-nach-Abfrage aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!