← Назад к вопросам

Как посчитать размер каждой группы при группировке в 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 для оптимизации

Это фундаментальный навык для анализа данных и подготовки аналитических отчётов.