Задача:
Напишите вместо пропуска в запросе выражение, которое найдет отделы, в которых работает больше 10 сотрудников:
SELECT DepartmentID, COUNT(*) AS EmpCount FROM Employees GROUP BY DepartmentID [ПРОПУСК] COUNT(*) > 10
Решение:
Для того чтобы отфильтровать группы (в данном случае, группы по DepartmentID) на основе агрегатной функции (COUNT(*)), используется ключевое слово HAVING.
Таким образом, пропущенное выражение будет HAVING.
Полный запрос будет выглядеть так:
SELECT DepartmentID, COUNT(*) AS EmpCount FROM Employees GROUP BY DepartmentID HAVING COUNT(*) > 10
Пояснение:
В языке SQL:
SELECT DepartmentID, COUNT(*) AS EmpCount: Выбирает идентификатор отдела (DepartmentID) и подсчитывает количество сотрудников в каждом отделе, присваивая этому подсчету псевдонимEmpCount.FROM Employees: Указывает, что данные берутся из таблицыEmployees.GROUP BY DepartmentID: Группирует строки по значениюDepartmentID, чтобы функцияCOUNT(*)подсчитывала сотрудников для каждого отдельного отдела.HAVING COUNT(*) > 10: Это условие фильтрует группы, созданные операторомGROUP BY. Оно оставляет только те группы (отделы), в которых количество сотрудников (COUNT(*)) больше 10. Важно отметить, чтоHAVINGиспользуется для фильтрации групп после их создания, в то время какWHEREиспользуется для фильтрации отдельных строк до группировки.
