53. Отделы, где число сотрудников не превышает трёх человек #
Условие задачи:
📌 В таблице EMPLOYEE(ID, NAME, SALARY, DEPARTMENT_ID, CHIEF_ID) нужно вывести список идентификаторов отделов, где общее количество сотрудников ≤ 3.
Код:
CREATE TABLE EMPLOYEE (
ID int,
NAME VARCHAR(256),
SALARY int,
DEPARTMENT_ID int,
CHIEF_ID int
);
-- Пример данных:
-- ID | NAME | SALARY | DEPARTMENT_ID | CHIEF_ID
-- ---+------------+--------+---------------+----------
-- 1 | Иванов | 150 | 1 | null
-- 2 | Петров | 250 | 1 | 1
-- 3 | Сидоров | 550 | 1 | 1
-- 4 | Медведев | 350 | 2 | 6
-- 5 | Соколов | 350 | 2 | 6
-- 6 | Рыбников | 150 | 2 | null
-- 7 | Арбузов | 450 | 3 | null
-- 8 | Орехов | 650 | 3 | 7
-- 9 | Дынин | 50 | 3 | 7
Спойлеры к решению
Подсказки
💡 Используйте
💡 Примените агрегат
💡 Отберите отделы, где
💡 Можно добавить
GROUP BY department_id, чтобы сгруппировать сотрудников по отделам.💡 Примените агрегат
COUNT(*) для подсчёта числа работников в каждом отделе.💡 Отберите отделы, где
COUNT(*) <= 3.💡 Можно добавить
ORDER BY department_id для удобства просмотра.Решение
SELECT
department_id
FROM EMPLOYEE
GROUP BY department_id
HAVING COUNT(*) <= 3
ORDER BY department_id;
Результат для примера данных:
| department_id |
|---|
| 1 |
| 2 |
| 3 |
🧠 Пояснение:
Все три отдела содержат ровно по 3 сотрудника, поэтому они выводятся.
Если в будущем появится отдел с 4+ сотрудниками, он будет исключён из результата.