Maison > base de données > tutoriel mysql > Comment les fonctions d'agrégation fonctionnent-elles avec la clause GROUP BY dans SQL ?

Comment les fonctions d'agrégation fonctionnent-elles avec la clause GROUP BY dans SQL ?

DDD
Libérer: 2025-01-13 08:31:44
original
732 Les gens l'ont consulté

How Do Aggregate Functions Work with the GROUP BY Clause in SQL?

Comprendre les fonctions GROUP BY et agrégation de SQL

La clause

SQL GROUP BY regroupe efficacement les lignes en fonction des colonnes spécifiées. Cependant, une confusion survient souvent lors de la sélection de colonnes non incluses dans le regroupement.

Considérez cette requête :

<code class="language-sql">SELECT *
FROM order_details
GROUP BY order_no;</code>
Copier après la connexion

Cette requête échouera dans de nombreux systèmes de bases de données (comme Oracle) car elle tente de sélectionner toutes les colonnes (*) tout en les regroupant uniquement par order_no. Cela viole la règle selon laquelle les colonnes non agrégées doivent faire partie de la clause GROUP BY.

La solution ? Incluez les colonnes non agrégées dans la clause GROUP BY à côté des fonctions d'agrégation. Par exemple :

<code class="language-sql">SELECT order_no, SUM(order_price)
FROM order_details
GROUP BY order_no;</code>
Copier après la connexion

Ici, order_no est à la fois dans les clauses SELECT et GROUP BY, tandis que SUM(order_price) effectue l'agrégation.

Répondre à la question clé :

Les fonctions d'agrégation peuvent-elles accéder à toutes les colonnes d'un groupe ?

Oui, les fonctions d'agrégation telles que SUM() fonctionnent sur toutes les lignes de chaque groupe, calculant la valeur globale pour la colonne spécifiée. Dans l'exemple ci-dessus, SUM(order_price) totalise le prix de chaque order_no.

Cependant, accéder aux colonnes non agrégées sans les inclure dans la clause GROUP BY entraîne des erreurs. La base de données ne peut pas déterminer quelle valeur sélectionner parmi plusieurs lignes au sein d'un groupe.

Par conséquent, incluez toujours toutes les colonnes non agrégées dans la clause GROUP BY, ou limitez la clause SELECT aux seules fonctions d'agrégation lorsque vous utilisez GROUP BY.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal