Task Livecoding SQL Departments With Few Employees

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+ сотрудниками, он будет исключён из результата.