Finden Sie den Maximalwert in der gruppierten Spalte einer großen Tabelle
In diesem Beispiel müssen Sie die Zeile mit dem Maximalwert einer bestimmten Spalte aus jeder Gruppierung einer großen Tabelle extrahieren, ohne eine ineffiziente Suche in mehreren Tabellen durchzuführen. Betrachten Sie das folgende Formular:
<code>SCORES ID ROUND SCORE 1 1 3 1 2 6 1 3 2 2 1 10 2 2 12 3 1 6</code>
Ihr Ziel ist es, die letzte Runde für jede eindeutige ID und die entsprechende Punktzahl abzurufen. Die gewünschte Ausgabe lautet wie folgt:
<code>ID ROUND SCORE 1 2 6 2 2 12 3 1 6</code>
Effiziente Lösung mit Fensterfunktionen
Eine effiziente Methode ist die Verwendung von Fensterfunktionen in Verbindung mit dem DISTINCT-Schlüsselwort:
<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>
Diese Abfrage verwendet die folgenden Schlüsselkonzepte:
Diese optimierte Abfrage gibt effizient die letzte Runde und das letzte Ergebnis für jede eindeutige ID zurück, ohne dass die Tabelle mehrmals gescannt werden muss, und bleibt auch bei großen Tabellen effizient.
Das obige ist der detaillierte Inhalt vonWie kann ich den Maximalwert in einer Spalte für jede Gruppe in einer großen Tabelle effizient finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!