Для всех отделов нужен LEFT JOIN от таблицы отделов. Если в Бухгалтерии нет сотрудников с ненулевой зарплатой, MAX(salary) даст NULL, а не ноль.
Как вывести все отделы включая Бухгалтерию? Что будет в max_salary для Бухгалтерии?
Для всех отделов нужен LEFT JOIN от таблицы отделов. Если в Бухгалтерии нет сотрудников с ненулевой зарплатой, MAX(salary) даст NULL, а не ноль.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Для всех отделов нужен LEFT JOIN от таблицы отделов. Если в Бухгалтерии нет сотрудников с ненулевой зарплатой, MAX(salary) даст NULL, а не ноль.
При условной схеме departments/employees:
SELECT d.id, d.name, MAX(e.salary) AS max_salary
FROM departments d
LEFT JOIN employees e ON e.department_id = d.id
GROUP BY d.id, d.name;
Фильтры по сотрудникам, которые не должны исключать пустые отделы, размещайте в ON, а не безусловно в WHERE. COALESCE может заменить NULL на 0 только по договорённости представления: отсутствие данных не равнозначно нулевой зарплате. Исходная схема и строки не приведены, поэтому результат для конкретной Бухгалтерии зависит от её сотрудников.