ホームページ >データベース >mysql チュートリアル >SQL で集計関数を使用するときに発生する「GROUP BY 式ではありません」エラーを回避するにはどうすればよいですか?
SQL の GROUP BY 句と集計関数を理解する
SQL の GROUP BY
句を使用すると、グループ化後にどの属性にアクセスできるかについて混乱が生じることがよくあります。明確にしましょう:
GROUP BY
および非集計列
グループ化後に非集計列にアクセスしようとすると、「GROUP BY 式ではありません」エラーが発生します。これは、各グループに複数の行が含まれる可能性があり、非集計列の値がそれらの行間で異なるためです。
集計関数: より詳しく見る
逆に、集計関数 (SUM
、MAX
、AVG
など) は、GROUP BY
を適用した後でも、各グループ内の基になる列にアクセスできます。 グループ全体の単一の集計値を計算します。
例:
次のクエリについて考えてみましょう:
<code class="language-sql">SELECT * FROM order_details GROUP BY order_no;</code>
このクエリは、order_price
などの非集計列で集計関数を使用せずにすべての列を選択しようとするため、失敗します。
ただし、これは有効なクエリです:
<code class="language-sql">SELECT SUM(order_price) FROM order_details GROUP BY order_no;</code>
ここで、SUM
は各グループを処理し、order_price
の値を合計して、各 order_no
の合計価格を算出します。
GROUP BY
グループ化後に非集計列にアクセスするには、それらを GROUP BY
句に含めます。
<code class="language-sql">SELECT order_no, SUM(order_price) FROM order_details GROUP BY order_no;</code>
これにより、各 order_no
とその合計 order_price
が正しく取得されます。
以上がSQL で集計関数を使用するときに発生する「GROUP BY 式ではありません」エラーを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。