Maison > base de données > tutoriel mysql > Comment résoudre l'erreur « pas une fonction de groupe à groupe unique » dans SQL ?

Comment résoudre l'erreur « pas une fonction de groupe à groupe unique » dans SQL ?

Mary-Kate Olsen
Libérer: 2024-12-29 09:31:15
original
595 Les gens l'ont consulté

How to Solve the

Comprendre les fonctions de regroupement SQL : résoudre l'erreur « pas une fonction de groupe à groupe unique »

Dans SQL, les fonctions de groupe telles que SUM( ) regroupe les valeurs sur plusieurs lignes, en les regroupant dans une colonne spécifique. Cependant, lorsque vous tentez de combiner une fonction de groupe avec une expression de colonne individuelle dans l'instruction SELECT, l'erreur « pas une fonction de groupe à groupe unique » se produit. Cette erreur se produit lorsque la fonction de groupe opère sur un sous-ensemble de données dans le même groupe que l'expression de colonne individuelle.

Pour résoudre ce problème, envisagez les options suivantes :

1 . Supprimez la fonction de groupe :

La suppression de la fonction SUM() invalide la valeur agrégée, ne laissant que l'expression de colonne individuelle.

2. Supprimez l'expression de colonne individuelle :

L'élimination de la colonne SSN de l'instruction SELECT résoudra l'erreur en renvoyant la valeur additionnée maximale.

3. Ajoutez une clause GROUP BY complète :

L'inclusion de toutes les expressions de colonne individuelles dans la clause GROUP BY garantit que chaque ligne appartient à un groupe distinct, correspondant à la portée de la fonction de groupe. Cependant, cette option peut ne pas convenir si vous avez l'intention de regrouper sur plusieurs colonnes et d'avoir des valeurs uniques pour chaque combinaison.

Requête alternative pour la récupération :

Pour le donné Afin de trouver le SSN du client avec le maximum de téléchargements, une requête alternative est recommandée :

SELECT TOP 1 SSN, SUM(TIME) AS TotalTime
FROM downloads
GROUP BY SSN
ORDER BY TotalTime DESC;
Copier après la connexion

Cette requête récupère le SSN et le total temps de téléchargement pour chaque SSN, trié par ordre décroissant en fonction de la durée totale. La clause TOP 1 limite le résultat au SSN avec la durée totale la plus élevée.

Alternativement, si plusieurs clients partagent la même durée totale maximale, la requête suivante peut être utilisée :

SELECT
SSN, SUM(TIME) AS TotalTime
FROM downloads
GROUP BY SSN
HAVING SUM(TIME) = (SELECT MAX(SUM(TIME)) FROM downloads GROUP BY SSN);
Copier après la connexion

Cette requête révisée récupère tous les SSN liés à la durée totale maximale de téléchargement, garantissant ainsi qu'aucune information n'est perdue.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal