Ответ
Чтобы получить количество элементов в каждой группе, я использую агрегатную функцию COUNT() в сочетании с оператором GROUP BY.
Базовый запрос:
SELECT
department_id, -- столбец для группировки
COUNT(*) AS employee_count -- подсчет строк в группе
FROM
employees
GROUP BY
department_id;
Этот запрос вернет список отделов и количество сотрудников в каждом.
Важные нюансы и варианты использования:
- *`COUNT()
vsCOUNT(column_name):**COUNT(*)считает все строки в группе.COUNT(column_name)считает только не-NULL значения в указанном столбце. Например,COUNT(manager_id)` покажет, у скольких сотрудников в отделе указан руководитель. - Фильтрация групп (
HAVING): Чтобы отфильтровать результат по размеру группы, используюHAVING, а неWHERE.SELECT department_id, COUNT(*) AS employee_count FROM employees GROUP BY department_id HAVING COUNT(*) > 5; -- Только отделы с более чем 5 сотрудниками - Сортировка по размеру группы:
SELECT department_id, COUNT(*) AS employee_count FROM employees GROUP BY department_id ORDER BY employee_count DESC; -- От самого многочисленного отдела к самому маленькому - Группировка по нескольким полям: Можно группировать по комбинации столбцов.
SELECT department_id, job_title, COUNT(*) AS count FROM employees GROUP BY department_id, job_title;