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

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

    SELECT department_id, MAX(salary) FROM employees;

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

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 の頻出論点です。