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