Comprendre l'erreur « Pas une fonction de groupe à groupe unique » dans SQL
Lors de la tentative de combinaison de fonctions de groupe avec des expressions de colonne individuelles dans un SELECT déclaration, comme dans la requête fournie :
SELECT SSN, MAX(SUM(TIME)) FROM downloads GROUP BY SSN
Vous pouvez rencontrer l'erreur "pas une fonction de groupe à groupe unique". Cela se produit car la fonction de groupe SUM(TIME) calcule une valeur unique pour chaque groupe (SSN), ce qui la rend incompatible avec l'expression de colonne individuelle SSN.
Pour résoudre cette erreur, vous disposez de plusieurs options :
Supprimer l'expression de colonne individuelle :
SELECT MAX(SUM(TIME)) FROM downloads GROUP BY SSN
Cela ne renverra que le maximum valeur de somme sans le SSN correspondant.
Ajoutez une clause GROUP BY pour toutes les expressions de colonne :
SELECT SSN, MAX(SUM(TIME)) FROM downloads GROUP BY SSN, TIME
Cela regroupera les résultats par à la fois SSN et TIME, ce qui rend la fonction MAX(SUM(TIME)) valide.
Utilisez une sous-requête agrégée :
SELECT SSN, SUM(TIME) FROM downloads GROUP BY SSN HAVING SUM(TIME) = (SELECT MAX(SUM(TIME)) FROM downloads GROUP BY SSN)
Cette sous-requête calcule la valeur de somme maximale et sélectionne uniquement les lignes où la SUM( TIME) pour chaque SSN correspond à ce maximum.
En fonction de votre exigences, l'une de ces solutions vous permettra d'obtenir les résultats souhaités sans rencontrer l'erreur « pas une fonction de groupe à groupe unique ».
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!