ホームページ >データベース >mysql チュートリアル >集計関数は SQL の GROUP BY 句とどのように連携しますか?
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_no
は SELECT
句と GROUP BY
句の両方にあり、SUM(order_price)
は集計を実行します。
重要な質問への対処:
集計関数はグループ内のすべての列にアクセスできますか?
はい、SUM()
のような集計関数は各グループ内のすべての行にわたって動作し、指定された列の集計値を計算します。 上の例では、SUM(order_price)
は各 order_no
の価格を合計します。
ただし、GROUP BY
句に非集計列を含めずにアクセスすると、エラーが発生します。データベースは、グループ内の複数の行からどの値を選択するかを決定できません。
したがって、GROUP BY
句には常にすべての非集計列を含めるか、SELECT
を使用する場合は GROUP BY
句を集計関数のみに制限してください。
以上が集計関数は SQL の GROUP BY 句とどのように連携しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。