Maison >base de données >tutoriel mysql >Comment sélectionner efficacement la valeur maximale pour chaque groupe dans une base de données SQL ?
Extraction des valeurs maximales pour chaque groupe en SQL
Une tâche SQL courante consiste à récupérer la valeur maximale de chaque groupe unique au sein d'une table. Illustrons cela avec un exemple de tableau :
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 |
Notre objectif est de trouver le Value
le plus élevé pour chaque Name
(pompe), donnant ce résultat :
Name | Value |
---|---|
Pump 1 | 10000.0 |
Pump 2 | 6165 |
Une approche naïve utilisant des sous-requêtes pour trouver la valeur maximale de chaque nom conduit souvent à des entrées en double lorsque plusieurs lignes partagent la même valeur maximale :
<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>
Cependant, une solution plus efficace et concise utilise la clause GROUP BY
:
<code class="language-sql">select name, max(value) from out_pumptable group by name;</code>
Cette requête regroupe les lignes en fonction de la colonne Name
, puis sélectionne le maximum Value
dans chaque groupe, évitant ainsi efficacement les résultats en double et fournissant le résultat souhaité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!