Heim >Datenbank >MySQL-Tutorial >Wie kann ich die ersten N Zeilen innerhalb jeder Gruppe in PostgreSQL effizient abrufen?
PostgreSQL: Abrufen der obersten N Zeilen innerhalb jeder Gruppe
Eine häufige Aufgabe in PostgreSQL besteht darin, eine festgelegte Anzahl von Zeilen aus jeder Gruppe auszuwählen. Dies kann mithilfe einer Technik, die oft als „Grouped LIMIT“ bezeichnet wird, effizient erreicht werden. So erreichen Sie dies mithilfe von Fensterfunktionen (verfügbar in PostgreSQL 8.4 und höher):
<code class="language-sql">SELECT * FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY section_id ORDER BY name) AS rn, t.* FROM xxx t ) AS x WHERE rn <= N;</code>
Erklärung:
Die Fensterfunktion ROW_NUMBER() OVER (PARTITION BY section_id ORDER BY name)
weist jeder Zeile innerhalb jeder rn
-Gruppe einen eindeutigen Rang (section_id
) zu, sortiert nach der Spalte name
. Die äußere Abfrage filtert dann diese Ergebnisse und behält nur Zeilen bei, deren Rang (rn
) kleiner oder gleich N
ist (ersetzen Sie N
durch die gewünschte Anzahl von Zeilen pro Gruppe). Dadurch werden die Ergebnisse effektiv auf die oberen N
Zeilen für jede Gruppe beschränkt.
Das obige ist der detaillierte Inhalt vonWie kann ich die ersten N Zeilen innerhalb jeder Gruppe in PostgreSQL effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!