Maison >base de données >tutoriel mysql >Comment sélectionner efficacement la valeur maximale pour chaque groupe dans une base de données SQL ?

Comment sélectionner efficacement la valeur maximale pour chaque groupe dans une base de données SQL ?

DDD
DDDoriginal
2025-01-16 13:10:01507parcourir

How to Efficiently Select the Maximum Value for Each Group in a SQL Database?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn