ORA-00979: GROUP BY 式ではありません
ORA-00979 エラーは、SQL クエリの SELECT
リストと GROUP BY
句の不一致を示します。 これは通常、SELECT
ステートメントに GROUP BY
句に存在しない列が含まれており、それらの列が SUM
、AVG
、MIN
、MAX
、COUNT
、など
シナリオ:
クエリには複数のテーブル (review
、cs
、fact
など) が含まれる可能性があり、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>
解決策:
これを修正するには、次のいずれかを行ってください:
不足している列を GROUP BY
句に追加します。 SELECT
句で集計されていない GROUP BY
リストのすべての列を含めます。
欠落している列を集計します: 集計関数 (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 サイトの他の関連記事を参照してください。