Heim > Datenbank > MySQL-Tutorial > Wie wähle ich die obersten N Zeilen pro Gruppe sortiert nach einer bestimmten Spalte in PostgreSQL aus?

Wie wähle ich die obersten N Zeilen pro Gruppe sortiert nach einer bestimmten Spalte in PostgreSQL aus?

Susan Sarandon
Freigeben: 2025-01-15 11:19:45
Original
212 Leute haben es durchsucht

How to Select the Top N Rows per Group Ordered by a Specific Column in PostgreSQL?

Gruppenbeschränkung in PostgreSQL: Wählen Sie die obersten N Zeilen in jeder Gruppe aus, sortiert nach benutzerdefinierter Spalte

Um die obersten N Zeilen in jeder Gruppe basierend auf einer benutzerdefinierten Spaltenreihenfolge abzurufen, bietet PostgreSQL eine Lösung für Benutzer (insbesondere diejenigen, die PostgreSQL 8.4 und höher verwenden).

Betrachten Sie die Beispieltabelle mit den Spalten „id“, „section_id“ und „name“:

id section_id name
1 1 A
2 1 B
3 1 C
4 1 D
5 2 E
6 2 F
7 3 G
8 2 H

Basierend auf den bereitgestellten Daten besteht die gewünschte Ausgabe darin, die ersten beiden Zeilen (sortiert nach „Name“) für jede „Abschnitts-ID“ auszuwählen.

Lösungen für PostgreSQL 8.4 und höher

<code class="language-sql">SELECT
  *
FROM (
  SELECT
    ROW_NUMBER() OVER (PARTITION BY section_id ORDER BY name) AS r,
    t.*
  FROM
    xxx t
) x
WHERE
  x.r <= 2;</code>
Nach dem Login kopieren

Diese erweiterte Lösung nutzt die Funktion „ROW_NUMBER()“ mit den Klauseln „PARTITION BY“ und „ORDER BY“, um die gewünschte Ergebnismenge zu erzielen. Jeder Zeile in der Tabelle „xxx“ wird ein Rang innerhalb ihrer jeweiligen „section_id“-Gruppe zugewiesen, wobei die Zeilen nach „Name“ sortiert sind. Durch die anschließende Auswahl basierend auf der Bedingung „x.r <= 2“ begrenzen wir effektiv die Anzahl der in jeder Gruppe zurückgegebenen Zeilen.

Das obige ist der detaillierte Inhalt vonWie wähle ich die obersten N Zeilen pro Gruppe sortiert nach einer bestimmten Spalte in PostgreSQL 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