Valeur maximale de la requête de groupe SQL
Cette question est conçue pour extraire des données spécifiques d'une table, dans le but de trouver l'enregistrement avec la valeur « Total » la plus élevée pour chaque champ « Nom » unique. Ceci est différent du problème de trouver le dernier enregistrement de chaque groupe.
Voici deux méthodes de requête SQL pour atteindre cet objectif :
Méthode 1 : Sous-requête
<code class="language-sql">SELECT Name, Top, Total FROM sometable WHERE Total = ( SELECT MAX(Total) FROM sometable i WHERE i.Name = sometable.Name );</code>
Cette requête utilise une sous-requête pour trouver la valeur Name
maximale dans chaque Total
groupe, puis sélectionne uniquement les enregistrements qui correspondent à cette valeur maximale.
Méthode 2 : Auto-connexion
<code class="language-sql">SELECT Name, Top, Total FROM sometable INNER JOIN ( SELECT MAX(Total) AS Total, Name FROM sometable GROUP BY Name ) AS max ON max.Name = sometable.Name AND max.Total = sometable.Total;</code>
Cette requête utilise INNER JOIN
pour joindre sometable
à une sous-requête qui calcule la valeur Name
maximale pour chaque Total
groupe. La condition INNER JOIN
garantit que seuls les enregistrements dont la valeur Total
correspond à la valeur maximale de chaque groupe sont sélectionnés.
Les deux méthodes donnent le même résultat :
Name | Top | Total |
---|---|---|
cat | 3 | 20 |
horse | 4 | 4 |
dog | 6 | 9 |
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!