Heim >Datenbank >MySQL-Tutorial >Wie erhalte ich die obersten N Zeilen pro Gruppe in SQL?
SQL-Tipp: Holen Sie sich die ersten N Datenzeilen nach Gruppe
In diesem Artikel wird erläutert, wie Sie die ersten N Datenzeilen für jede Gruppe effizient aus einer SQL-Datenbank extrahieren. Um dies zu erreichen, verwenden wir Fensterfunktionen wie ROW_NUMBER(), RANK() und DENSE_RANK(). Diese Funktionen generieren eindeutige Bezeichner innerhalb einer bestimmten Partition und eignen sich ideal für die Gruppierung und Zeilenauswahl.
Verwenden Sie ROW_NUMBER()
Die FunktionROW_NUMBER() weist den Zeilen in jeder Partition fortlaufende Seriennummern beginnend bei 1 zu.
<code class="language-sql">SELECT *, ROW_NUMBER() OVER (PARTITION BY id ORDER BY rate DESC) AS rn FROM h WHERE year BETWEEN 2000 AND 2009</code>
In diesem Beispiel erstellt ROW_NUMBER() eine neue Spalte mit dem Namen „rn“, um den Zeilen in jeder id
Gruppe eine Seriennummer zuzuweisen.
Verwenden Sie RANK() und DENSE_RANK()
Die Funktionen RANK() und DENSE_RANK() bieten eine weitere Möglichkeit, Zeilen innerhalb einer Gruppe zu nummerieren. RANK() weist Zeilen mit derselben Sortierung unterschiedliche Werte zu, während DENSE_RANK() aufeinanderfolgende Werte zuweist.
<code class="language-sql">SELECT *, RANK() OVER (PARTITION BY id ORDER BY rate DESC) AS rk, DENSE_RANK() OVER (PARTITION BY id ORDER BY rate DESC) AS dr FROM h WHERE year BETWEEN 2000 AND 2009</code>
RANK() und DENSE_RANK() erstellen die Spalten „rk“ bzw. „dr“, die den Rang und die dichte Rangfolge jeder Zeile innerhalb ihrer id
-Gruppierung darstellen.
Kombiniert mit LIMIT oder TOP, um die Ergebnisse einzuschränken
Nachdem Sie jeder Gruppierung eine eindeutige Kennung zugewiesen haben, können Sie den Modifikator LIMIT oder TOP verwenden, um nur die angegebene Anzahl von Zeilen pro Gruppierung abzurufen.
<code class="language-sql">SELECT * FROM h WHERE year BETWEEN 2000 AND 2009 ORDER BY id, rate DESC LIMIT 5</code>
In diesem Beispiel ruft der LIMIT-Modifikator die ersten 5 Zeilen jeder id
-Gruppe ab. Sie können die Zahlen nach Bedarf anpassen.
Das obige ist der detaillierte Inhalt vonWie erhalte ich die obersten N Zeilen pro Gruppe in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!