49. Найти минимальную и максимальную зарплату по отделам
Условие задачи:
Даны таблицы:
units(id, name)— подразделения компании;employees(id, unit_id, salary, fired)— сотрудники.
Необходимо для каждого unit_id получить минимальную и максимальную зарплату среди неуволенных сотрудников.
Спойлеры к решению
Подсказки
💡 Сначала оставь только неуволенных сотрудников.
💡 Сгруппируй записи по
💡 Для поиска зарплат используй
💡 Сгруппируй записи по
unit_id.💡 Для поиска зарплат используй
MIN() и MAX().Решение
SELECT
unit_id,
MIN(salary) AS min_salary,
MAX(salary) AS max_salary
FROM employees
WHERE fired = false
GROUP BY unit_id;
Условие:
WHERE fired = false
исключает уволенных сотрудников.
После группировки по unit_id агрегатные функции вычисляют минимальную и максимальную зарплату отдельно для каждого подразделения.
Если дополнительно требуется название подразделения:
SELECT
u.id AS unit_id,
u.name AS unit_name,
MIN(e.salary) AS min_salary,
MAX(e.salary) AS max_salary
FROM units u
JOIN employees e
ON e.unit_id = u.id
WHERE e.fired = false
GROUP BY
u.id,
u.name;