Maison > base de données > tutoriel mysql > Pourquoi ma requête SQL renvoie-t-elle une erreur « pas une fonction de groupe à groupe unique » ?

Pourquoi ma requête SQL renvoie-t-elle une erreur « pas une fonction de groupe à groupe unique » ?

Mary-Kate Olsen
Libérer: 2024-12-21 05:38:13
original
884 Les gens l'ont consulté

Why Does My SQL Query Return a

Fonction SQL "pas une fonction de groupe à groupe unique" expliquée

En SQL, lors de l'utilisation d'une fonction de groupe telle que MAX, la fonction doit être appliqué à un seul groupe de données. Cela signifie que si vous souhaitez trouver la valeur maximale pour une colonne spécifique, vous devez également regrouper les données par cette colonne.

Cependant, si vous essayez d'appliquer une fonction de groupe à une expression qui n'est pas groupée, vous recevrez l’erreur « pas une fonction de groupe à groupe unique ». Par exemple, disons que vous avez une table appelée téléchargements qui contient une colonne pour les téléchargements par un client :

SELECT MAX(SUM(TIME))
FROM downloads
GROUP BY SSN
Copier après la connexion

Cette requête est valide car la fonction MAX est appliquée à un groupe de données (téléchargements par SSN) . Cependant, si vous essayez d'ajouter la colonne SSN à l'instruction select, comme ceci :

SELECT SSN, MAX(SUM(TIME))
FROM downloads
GROUP BY SSN
Copier après la connexion

Vous recevrez l'erreur « pas une fonction de groupe à groupe unique » car la colonne SSN n'est pas incluse dans la colonne SSN. Clause GROUPE PAR. Cela signifie que SQL ne peut pas déterminer à quel groupe de données appartient la colonne SSN et ne peut donc pas lui appliquer la fonction MAX.

Pour résoudre cette erreur, vous disposez de trois options :

  • Supprimez la fonction MAX de l'instruction select, ce qui vous donnera la somme des téléchargements pour chaque SSN.
  • Supprimez la colonne SSN de l'instruction select, ce qui vous donnera le total maximum temps téléchargé par n'importe quel client.
  • Ajoutez la colonne SSN à la clause GROUP BY, comme ceci :
SELECT SSN, MAX(SUM(TIME))
FROM downloads
GROUP BY SSN, TIME
Copier après la connexion

Cela vous donnera le temps total maximum téléchargé pour chaque SSN unique et combinaison de temps.

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