SQL の GROUP BY 関数と集計関数をより明確に理解する
SQL のデータ集約機能は強力ですが、GROUP BY
と集約関数の間の相互作用は混乱を招く可能性があります。よくある間違いは、SELECT
句で明示的にリストせずに GROUP BY
を使用した後、GROUP BY
ステートメントで非集計列を選択することです。
例:
<code class="language-sql">SELECT * FROM order_details GROUP BY order_no</code>
'*' が GROUP BY
句の一部ではないため、このクエリは失敗し、エラーが生成されます。 解決策は、GROUP BY
句内にすべての非集計列をリストすることです。
ただし、集計関数を使用すると動作が変わります。
<code class="language-sql">SELECT SUM(order_price) FROM order_details GROUP BY order_no</code>
これにより、order_no
句に order_price
がなくても、各 GROUP BY
の注文価格が正常に合計されます。 集計関数は、対応する列が GROUP BY
リストにあるかどうかに関係なく、各グループ内のすべての行にわたって計算します。
誤解を避けるために、属性でグループ化した後は、GROUP BY
式に含まれていない他の属性には直接アクセスできないことに注意してください。 グループベースの計算を通じてこれらの属性にアクセスできるのは、集計関数のみです。
標準 SQL (MySQL とは異なります) では、すべての非集計列を GROUP BY
句に明示的に含めることが義務付けられています。 列のサブセットでグループ化しても、それらの列が GROUP BY
.
最後に、異なるグループ化ベースで複数の集計関数を使用すると、予測不能または曖昧な結果が生じる可能性があります。 GROUP BY
関数と集計関数を慎重に組み合わせて、クエリを実行する前に意図した結果が明確であることを確認してください。
以上がGROUP BY 関数と集計関数は SQL クエリでどのように相互作用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。