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
DDDoriginal
2025-01-13 08:31:44770parcourir

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>

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>

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!

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