Heim > Datenbank > MySQL-Tutorial > Wie wähle ich die erste Zeile in einer PostgreSQL-Gruppen-nach-Abfrage aus?

Wie wähle ich die erste Zeile in einer PostgreSQL-Gruppen-nach-Abfrage aus?

Barbara Streisand
Freigeben: 2025-01-25 20:09:15
Original
548 Leute haben es durchsucht

How to Select the First Row in a PostgreSQL Group By Query?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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

    Die
  • DISTINCT ON-Klausel muss in der ORDER BY-Klausel enthalten sein, der Standard erfordert jedoch keine zusätzliche ID-Spalte.
  • Wenn die Gesamtspalte Nullwerte enthalten kann, sollte NULLS LAST zur ORDER BY-Klausel hinzugefügt werden:
<code class="language-sql">ORDER BY customer, total DESC NULLS LAST, id;</code>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage