ホームページ > データベース > mysql チュートリアル > SQLクエリのORA-00979「GROUP BY式ではありません」エラーを解決するにはどうすればよいですか?

SQLクエリのORA-00979「GROUP BY式ではありません」エラーを解決するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-24 04:41:08
オリジナル
448 人が閲覧しました

How to Resolve the ORA-00979

ORA-00979: GROUP BY 式ではありません

ORA-00979 エラーは、SQL クエリの SELECT リストと GROUP BY 句の不一致を示します。 これは通常、SELECT ステートメントに GROUP BY 句に存在しない列が含まれており、それらの列が SUMAVGMINMAXCOUNT、など

シナリオ:

クエリには複数のテーブル (reviewcsfact など) が含まれる可能性があり、GROUP BY 句は SELECT リスト内のすべての非集計列を包含するわけではありません。 例:

<code class="language-sql">SELECT cr.review_sk, cr.cs_sk, cf.fact_date, cr.tracking_number,  cf.some_other_column  -- Problem: cf.some_other_column is missing from GROUP BY
FROM review cr
JOIN cs ON ...
JOIN fact cf ON ...
GROUP BY cr.review_sk, cr.cs_sk, cf.fact_date, cr.tracking_number;</code>
ログイン後にコピー

解決策:

これを修正するには、次のいずれかを行ってください:

  1. 不足している列を GROUP BY 句に追加します。 SELECT 句で集計されていない GROUP BY リストのすべての列を含めます。

  2. 欠落している列を集計します: 集計関数 (SUM(cf.some_other_column) など) を使用して、列の値を集計します。

追加の考慮事項:

  • 非等価結合: すべての SELECT 列が GROUP BY 内にある場合でも、非等価結合 (t1.id > t2.id など) ではエラーが発生する可能性があります。 これにより重複行が作成され、GROUP BY 原則に違反します。 結合条件を修正するか、サブクエリを使用して重複を排除します。

  • GROUP BY: について GROUP BY 句は、指定された列内の同じ値を持つ行をグループ化し、各グループに対して集計関数を実行できるようにします。 適切にグループ化しないと、データベースは非集計列の単一の値を決定できません。

SELECT リスト内のすべての列が GROUP BY 句内にあるか、集計されていることを確認することで、ORA-00979 エラーを解決し、一貫したクエリ結果を取得できます。

以上がSQLクエリのORA-00979「GROUP BY式ではありません」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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