Heim > Datenbank > MySQL-Tutorial > Wie kann ich den höchsten Wert einer nach ID gruppierten Spalte in SQL effizient abrufen?

Wie kann ich den höchsten Wert einer nach ID gruppierten Spalte in SQL effizient abrufen?

Barbara Streisand
Freigeben: 2025-01-21 08:09:39
Original
933 Leute haben es durchsucht

How to Efficiently Retrieve the Highest Value of a Column Grouped by ID in SQL?

SQL-Abfrage zum Suchen des maximalen Spaltenwerts gruppiert nach ID

Dieser Artikel befasst sich mit dem Problem des effizienten Abrufens des höchsten Werts aus einer Spalte, gruppiert nach einer eindeutigen ID innerhalb einer Datenbanktabelle. Lassen Sie uns dies anhand der Tabelle „SCORES“ veranschaulichen:

<code>ID    ROUND    SCORE
1     1        3
1     2        6
1     3        2
2     1        10
2     2        12
3     1        6</code>
Nach dem Login kopieren

Unser Ziel ist es, die Zeile zu erhalten, die den maximalen „ROUND“-Wert für jede „ID“ enthält, zusammen mit dem entsprechenden „SCORE“. Die gewünschte Ausgabe ist:

<code>ID   ROUND   SCORE
1    3       2
2    2       12
3    1       6</code>
Nach dem Login kopieren

Ein Unterabfrage-Ansatz ist zwar möglich, kann jedoch bei großen Datensätzen ineffizient sein. Eine überlegene Methode nutzt Fensterfunktionen:

<code class="language-sql">SELECT DISTINCT
       id
      ,max(round) OVER (PARTITION BY id) AS round
      ,first_value(score) OVER (PARTITION BY id ORDER BY round DESC) AS score
FROM   SCORES
WHERE  id IN (1,2,3)
ORDER  BY id;</code>
Nach dem Login kopieren

Diese Abfrage nutzt max(round) OVER (PARTITION BY id), um den maximalen „ROUND“ für jede „ID“ zu bestimmen. first_value(score) OVER (PARTITION BY id ORDER BY round DESC) ruft dann den „SCORE“ ab, der dieser maximalen „RUNDE“ zugeordnet ist. DISTINCT stellt sicher, dass nur eine Zeile pro „ID“ zurückgegeben wird.

Dieser Fensterfunktionsansatz vermeidet mehrere Tabellenscans und bietet eine deutlich effizientere Lösung für große Datenbanken.

Das obige ist der detaillierte Inhalt vonWie kann ich den höchsten Wert einer nach ID gruppierten Spalte in SQL effizient abrufen?. 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