SQL の GROUP BY 句の ORA-00979 エラーをデコードする
この一般的な SQL エラー ORA-00979 (「GROUP BY 式ではありません」) は、クエリで GROUP BY
が使用されているが、SELECT
リストにグループ化も集計もされていない列が含まれている場合に発生します。 これを修正する方法を見てみましょう。
核心的な問題は、SELECT
節と GROUP BY
節の不一致にあります。 GROUP BY
は、値が一致する行をグループに統合します。 SELECT
ステートメント内のすべての列は、次のいずれかを行う必要があります。
GROUP BY
句に表示されます: これにより、選択された各値がグループに直接関連付けられるようになります。MIN()
、MAX()
、SUM()
、AVG()
、COUNT()
などの関数を使用して、各グループ内の値を集計します。具体例
予定が入ったテーブルを想像してください:
Appointment ID (appt_id) | Patient Name (patient) | Doctor (doctor) |
---|---|---|
1 | Alice | Dr. Smith |
2 | Bob | Dr. Smith |
3 | Charlie | Dr. Jones |
間違ったクエリ:
<code class="language-sql">SELECT appt_id, patient, doctor FROM appointments GROUP BY doctor;</code>
appt_id
と patient
がグループ化されていないため、これは ORA-00979 で失敗します。
正しいアプローチ
GROUP BY
に含めます:<code class="language-sql">SELECT doctor, COUNT(*) FROM appointments GROUP BY doctor;</code>
これは医師ごとの予約をカウントします。
<code class="language-sql">SELECT doctor, COUNT(*) AS appointment_count, MIN(appt_id) AS first_appointment FROM appointments GROUP BY doctor;</code>
これは予約をカウントし、医師ごとの最小予約 ID を見つけます。
重要なのは、グループ化基準と選択したデータの間の一貫した関係を確保することです。 集計関数を使用すると、グループ内のデータを要約して、ORA-00979 エラーを回避できます。
以上がSQL クエリで「ORA-00979: GROUP BY 式ではありません」が生成されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。