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