Heim > Datenbank > MySQL-Tutorial > Wie wähle ich die obersten N Zeilen für jede Gruppe in SQL aus?

Wie wähle ich die obersten N Zeilen für jede Gruppe in SQL aus?

Barbara Streisand
Freigeben: 2024-12-31 08:42:10
Original
717 Leute haben es durchsucht

How to Select the Top N Rows for Each Group in SQL?

Oberste N Zeilen für jede Gruppe in SQL

In SQL kann die Auswahl der obersten Zeilen für jede Gruppe mithilfe von Fensterfunktionen erfolgen. Fensterfunktionen ermöglichen die Durchführung von Berechnungen für eine Reihe von Zeilen, die als Fenster bezeichnet werden und durch eine bestimmte Reihenfolge und Partition definiert sind. In diesem Fall möchten wir die beiden obersten Zeilen für jede Gruppe auswählen, was mit den folgenden Schritten erreicht werden kann:

  1. Partitionieren Sie die Daten:Definieren Sie die Gruppen, für die Sie Sie möchten die obersten Zeilen mithilfe der PARTITION BY-Klausel auswählen. In diesem Beispiel möchten wir die Daten nach der Spalte NAME gruppieren.
  2. Rangfolge der Zeilen innerhalb jeder Gruppe: Verwenden Sie die Fensterfunktion ROW_NUMBER(), um jeder Zeile darin eine fortlaufende Nummer zuzuweisen jede Gruppe, beginnend bei 1. Dadurch erhalten wir den Rang jeder Zeile innerhalb ihrer Gruppe.
  3. Filtern Sie die oberen Zeilen: Anwenden von a Filtern Sie, um nur die Zeilen auszuwählen, die einen Rang von 1 oder 2 haben. Dadurch erhalten wir die beiden obersten Zeilen für jede Gruppe.

Hier ist eine Beispielabfrage, die diese Schritte implementiert:

SELECT *
FROM (
    SELECT *, RANK() OVER (PARTITION BY NAME ORDER BY SCORE DESC) AS row_rank
    FROM test
) AS ranked
WHERE row_rank <= 2
Nach dem Login kopieren

Diese Abfrage erzeugt die gewünschte Ausgabe, wie unten gezeigt:

NAME    SCORE
-----------------
willy       2
willy       3
zoe         5
zoe         6
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie wähle ich die obersten N Zeilen für jede Gruppe in SQL 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