ホームページ > データベース > mysql チュートリアル > 集計関数は SQL の GROUP BY 句とどのように連携しますか?

集計関数は SQL の GROUP BY 句とどのように連携しますか?

DDD
リリース: 2025-01-13 08:31:44
オリジナル
730 人が閲覧しました

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

SQL の GROUP BY 関数と集計関数を理解する

SQL の GROUP BY 句は、指定された列に基づいて行を効率的にグループ化します。 ただし、グループ化に含まれていない列を選択すると、混乱が生じることがよくあります。

次のクエリについて考えてみましょう:

<code class="language-sql">SELECT *
FROM order_details
GROUP BY order_no;</code>
ログイン後にコピー

このクエリは、* のみでグループ化しながらすべての列 (order_no) を選択しようとするため、多くのデータベース システム (Oracle など) では失敗します。 これは、非集計列は GROUP BY 句の一部でなければならないというルールに違反します。

解決策は? 非集計列を集計関数と一緒に GROUP BY 句に含めます。 例:

<code class="language-sql">SELECT order_no, SUM(order_price)
FROM order_details
GROUP BY order_no;</code>
ログイン後にコピー

ここで、order_noSELECT 句と GROUP BY 句の両方にあり、SUM(order_price) は集計を実行します。

重要な質問への対処:

集計関数はグループ内のすべての列にアクセスできますか?

はい、SUM() のような集計関数は各グループ内のすべての行にわたって動作し、指定された列の集計値を計算します。 上の例では、SUM(order_price) は各 order_no の価格を合計します。

ただし、GROUP BY 句に非集計列を含めずにアクセスすると、エラーが発生します。データベースは、グループ内の複数の行からどの値を選択するかを決定できません。

したがって、GROUP BY 句には常にすべての非集計列を含めるか、SELECT を使用する場合は GROUP BY 句を集計関数のみに制限してください。

以上が集計関数は SQL の GROUP BY 句とどのように連携しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート