Oracle試験道場

1Z0-071 · Silver SQL

グループ関数を使用した集計データのレポート

★★☆☆☆
Q10of 20

以下のSQL文で、どのような結果が返されますか。Silver SQL10

以下のSQL文で、どのような結果が返されますか。

SELECT department_id, MAX(salary) FROM employees;

Choices選択肢

  • A全従業員の最高給与
  • B部署ごとの最高給与
  • C従業員数ごとの最高給与
  • Dエラー正解
Answer

正解は、Dです

Explanation解説

SELECT 句に **集計ファンクションと非集計の列を混在させる場合は、非集計の列を GROUP BY で指定する必要があります**。

今回の SQL は department_id を GROUP BY せずに MAX(salary) と並べているため、構文エラー(ORA-00937: not a single-group group function)になります。

正しい書き方:

-- 部署ごとの最高給与を取得したい場合
SELECT department_id, MAX(salary)
FROM employees
GROUP BY department_id;

ルール:

> SELECT 句に集計関数と非集計列が混在している場合、非集計列はすべて GROUP BY 句に含まれていなければならない。

このルールは Silver SQL の頻出論点です。