Maison >base de données >tutoriel mysql >Pourquoi l'utilisation de SUM() sans GROUP BY renvoie-t-elle des résultats inattendus ?

Pourquoi l'utilisation de SUM() sans GROUP BY renvoie-t-elle des résultats inattendus ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-20 16:46:18552parcourir

Why Does Using SUM() Without GROUP BY Return Unexpected Results?

Comprendre la nécessité de GROUP BY avec des fonctions d'agrégation

L'exemple fourni présente un scénario déroutant où la somme des salaires des employés sans utiliser le GROUPE La clause BY entraînait le renvoi de la table d'origine en sortie. Pour percer ce mystère, nous examinons l'objectif et le rôle de GROUP BY lorsque nous travaillons avec des fonctions d'agrégation telles que SUM().

GROUP BY, comme son nom l'indique, regroupe les lignes en fonction de critères spécifiés. Ce regroupement devient particulièrement crucial lors de l'utilisation de fonctions d'agrégation qui effectuent des calculs sur des groupes de lignes plutôt que sur des lignes individuelles. Dans notre cas, la fonction SUM() calcule la somme de MonthlySalary pour chaque EmployeeID unique.

Sans utiliser GROUP BY, la requête tenterait de calculer la somme de toutes les valeurs MonthlySalary sans les regrouper par EmployeeID. Cela donnerait un résultat erroné car cela résumerait essentiellement tous les salaires du tableau, les traitant comme un seul pool massif.

Prenons l'exemple suivant :

SELECT EmployeeID, SUM(MonthlySalary)
FROM Employee;

Le résultat de cette requête sera une seule ligne avec EmployeeID comme NULL et la somme de tous les salaires. Ce résultat n'a aucun sens car il ne fournit pas les informations nécessaires sur les totaux de salaire spécifiques à chaque employé.

En incluant GROUP BY dans la requête, nous forçons la base de données à effectuer le calcul pour chaque EmployeeID unique, ce qui donne un résultat significatif. sortie :

SELECT EmployeeID, SUM(MonthlySalary)
FROM Employee
GROUP BY EmployeeID;

Maintenant, le résultat comprendra des lignes individuelles pour chaque employé, affichant leurs ID d'employé respectifs et la somme correspondante Salaires mensuels.

En résumé, GROUP BY garantit que les fonctions d'agrégation telles que SUM() sont appliquées à des groupes spécifiques de lignes, permettant des agrégations de données significatives. Il facilite l’extraction d’informations significatives et évite toute interprétation erronée des résultats.

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