以下のSQL文で、どのような結果が返されますか。
SELECT department_id, MAX(salary) FROM employees;
以下の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 の頻出論点です。