Heim >Datenbank >MySQL-Tutorial >Wie bekomme ich die Top -N -Zeilen für jede Gruppe in MySQL?

Wie bekomme ich die Top -N -Zeilen für jede Gruppe in MySQL?

DDD
DDDOriginal
2025-01-25 12:11:08307Durchsuche

How to Get the Top N Rows for Each Group in MySQL?

extrahieren obere N -Zeilen für jede Gruppe in MySQL

Müssen Sie die Top -N -Zeilen für jede Gruppe in Ihren MySQL -Daten abrufen? Die Standardbestellung bietet Ihnen möglicherweise nicht immer die Ergebnisse, die Sie erwarten. Diese Anleitung zeigt, wie MySQLs leistungsstarke Fensterfunktionen wie ROW_NUMBER, RANK und DENSE_RANK verwendet werden, um dies effizient zu erreichen.

Stellen Sie sich eine Tabelle mit PKID (Primärschlüssel), CATID (Kategorie) und value -Pralen vor. Um die Top 5 Zeilen für jedes CATID zu erhalten, verwenden Sie die Funktion ROW_NUMBER:

<code class="language-sql">SELECT PKID, CATID, value,
ROW_NUMBER() OVER (PARTITION BY CATID ORDER BY value DESC) AS RowNum
FROM table_name;</code>

ROW_NUMBER weist in jeder CATID -Gruppe einen eindeutigen Rang zu, der von value (in diesem Fall absteigende) geordnet ist. Um nur die Top 5 zu filtern, wickeln Sie diese in eine Unterabfrage ein:

<code class="language-sql">SELECT PKID, CATID, value
FROM (
  SELECT PKID, CATID, value,
  ROW_NUMBER() OVER (PARTITION BY CATID ORDER BY value DESC) AS RowNum
  FROM table_name
) AS subquery
WHERE RowNum <= 5;</code>

Diese raffinierte Abfrage ruft effizient nur die Top 5 Zeilen pro Kategorie ab und bietet eine genaue und optimierte Lösung für Ihre Datenabrufanforderungen. Denken Sie daran, den Zustand <= 5 zur Steuerung der Anzahl der gewünschten oberen Zeilen pro Gruppe anzupassen.

Das obige ist der detaillierte Inhalt vonWie bekomme ich die Top -N -Zeilen für jede Gruppe in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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