← Назад к вопросам
Как посчитать размер каждой группы при группировке в SQL?
1.6 Junior🔥 271 комментариев
#SQL и базы данных
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Подсчёт размера группы в SQL
При группировке в SQL размер каждой группы подсчитывается с помощью агрегирующей функции COUNT(), которая считает количество строк в каждой группе.
Основной синтаксис
Самый простой способ — использовать COUNT(*) или COUNT(column):
SELECT column1, COUNT(*) as group_size
FROM table_name
GROUP BY column1;
Здесь COUNT(*) подсчитывает все строки в каждой группе, включая строки с NULL значениями.
Примеры использования
Пример 1: Количество заказов по клиентам
SELECT
customer_id,
COUNT(*) as number_of_orders
FROM orders
GROUP BY customer_id
ORDER BY number_of_orders DESC;
Пример 2: Группировка по нескольким столбцам
SELECT
department,
job_title,
COUNT(*) as employees_count
FROM employees
GROUP BY department, job_title;
Различия между COUNT() вариантами
- COUNT(*) — считает все строки, включая NULL
- COUNT(column) — считает только непустые значения в столбце
- COUNT(DISTINCT column) — считает уникальные непустые значения
SELECT
category,
COUNT(*) as total_rows,
COUNT(description) as non_null_descriptions,
COUNT(DISTINCT user_id) as unique_users
FROM products
GROUP BY category;
Фильтрация групп с HAVING
Если нужны только группы определённого размера, используется HAVING:
SELECT
department,
COUNT(*) as dept_size
FROM employees
GROUP BY department
HAVING COUNT(*) > 10
ORDER BY dept_size DESC;
Производительность
Для больших таблиц важно помнить:
- Индекс на столбце GROUP BY ускорит группировку
- COUNT(*) часто быстрее COUNT(column)
- Фильтруй строки WHERE до GROUP BY для оптимизации
Это фундаментальный навык для анализа данных и подготовки аналитических отчётов.