Maison > base de données > tutoriel mysql > Comment puis-je utiliser correctement les fonctions d'agrégation dans une clause WHERE ?

Comment puis-je utiliser correctement les fonctions d'agrégation dans une clause WHERE ?

Patricia Arquette
Libérer: 2025-01-03 15:23:41
original
812 Les gens l'ont consulté

How Can I Correctly Use Aggregate Functions in a WHERE Clause?

Comment utiliser correctement les fonctions d'agrégation dans la clause WHERE ?

Cette erreur, « Utilisation non valide de la fonction de groupe », se produit lorsqu'une fonction d'agrégation (comme AVG() dans ce cas) est utilisé de manière incorrecte dans la clause WHERE. Une fonction d'agrégation résume un groupe de valeurs et elle ne peut pas être utilisée directement dans une clause WHERE.

Pour résoudre ce problème, il existe deux options :

Utiliser une sous-requête dans la Clause WHERE :

select *
from staff
where salary > (select avg(salary) from staff)
Copier après la connexion

Dans cet exemple, la sous-requête (sélectionner la moyenne (salaire) du personnel) calcule le salaire moyen et l'affecte à une variable temporaire. La clause WHERE compare ensuite le salaire de chaque membre du personnel à cette valeur moyenne.

Utilisation d'une clause HAVING avec GROUP BY :

select deptid, COUNT(*) as TotalCount
from staff
group by deptid
having COUNT(*) > 2
Copier après la connexion

Dans cet exemple, le La clause HAVING est utilisée pour spécifier une condition pour le groupe par département. La clause HAVING vérifie ici si le nombre de membres du personnel au sein de chaque département est supérieur à 2. Notez que HAVING est utilisé avec GROUP BY pour effectuer des calculs sur les lignes regroupées.

L'utilisation de l'une ou l'autre de ces méthodes garantit que l'agrégat la fonction est utilisée de manière appropriée et les résultats corrects sont renvoyés.

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 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