После исправления синтаксиса исходных DDL/INSERT используйте GROUP BY и HAVING COUNT(*) > 2. По указанным department_id ответ — O1.
SQL‑запрос: отделы, в которых работает более двух сотрудников
После исправления синтаксиса исходных DDL/INSERT используйте GROUP BY и HAVING COUNT(*) > 2. По указанным department_id ответ — O1.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Нужно получить список отделов, где количество сотрудников превышает два.
CREATE TABLE department
(id int(11), name varchar(100))
}
CREATE TABLE employee
(id int(11), department_id int(11), chief_id int(11), name varchar(100), salary int(11))
}
INSERT INTO department
(id, name)
VALUES
(1, "O1"),
(2, "O2"),
(3, "O3")
}
INSERT INTO employee
(id, department_id, chief_id, name, salary)
VALUES
(1, 1, S, "Jean", 200),
(2, 1, S, "Milan", 600),
(3, 2, S, "Hagen", 400),
(4, 2, S, "Talya", 400),
(5, 1, NULL, "Stepen Chief", 500);
Ответ
После исправления синтаксиса исходных DDL/INSERT используйте GROUP BY и HAVING COUNT(*) > 2. По указанным department_id ответ — O1.
SELECT d.name
FROM department AS d
JOIN employee AS e ON e.department_id = d.id
GROUP BY d.id, d.name
HAVING COUNT(*) > 2;
У отдела 1 три сотрудника, у отдела 2 два, у отдела 3 ни одного. Значение chief_id для этого запроса не важно.
Исходный SQL содержит повреждения: фигурные скобки вместо завершения команд, неопределённый S и непереносимые двойные кавычки строковых литералов. Для реального выполнения исправьте их по исходным данным, не угадывая идентификатор руководителя. Запрос группирует по id, чтобы одноимённые отделы не объединялись.