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