Maximalwerte für jede Gruppe in SQL extrahieren
Eine häufige SQL-Aufgabe besteht darin, den Maximalwert für jede eindeutige Gruppe innerhalb einer Tabelle abzurufen. Lassen Sie uns dies anhand einer Beispieltabelle veranschaulichen:
Name | Value | AnotherColumn |
---|---|---|
Pump 1 | 8000.0 | Something1 |
Pump 1 | 10000.0 | Something2 |
Pump 1 | 10000.0 | Something3 |
Pump 2 | 3043 | Something4 |
Pump 2 | 4594 | Something5 |
Pump 2 | 6165 | Something6 |
Unser Ziel ist es, den höchsten Value
für jede Name
(Pumpe) zu finden, was zu diesem Ergebnis führt:
Name | Value |
---|---|
Pump 1 | 10000.0 |
Pump 2 | 6165 |
Ein naiver Ansatz, der Unterabfragen verwendet, um den Maximalwert für jeden Namen zu ermitteln, führt oft zu doppelten Einträgen, wenn mehrere Zeilen denselben Maximalwert haben:
<code class="language-sql">select a.name, value from out_pumptable as a, (select name, max(value) as value from out_pumptable group by name) g where a.name = g.name and g.value = a.value</code>
Eine effizientere und präzisere Lösung nutzt jedoch die GROUP BY
-Klausel:
<code class="language-sql">select name, max(value) from out_pumptable group by name;</code>
Diese Abfrage gruppiert Zeilen basierend auf der Spalte Name
und wählt dann das Maximum Value
innerhalb jeder Gruppe aus, wodurch doppelte Ergebnisse effektiv vermieden werden und die gewünschte Ausgabe bereitgestellt wird.
Das obige ist der detaillierte Inhalt vonWie wählt man effizient den Maximalwert für jede Gruppe in einer SQL-Datenbank aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!