Минимальная и максимальная зарплата по отделам среди неуволенных

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;