Агрегация (COUNT)
На начальном этапе исследования данных аналитику зачастую необходимо банально подсчитать количество элементов в группе или наборе данных и представить эту информацию в виде одного числа. Для решения задачи такого рода полезно начать работу с использования агрегирующей функции COUNT.
Функция COUNT называется агрегирующей, потому что она собирает или "складывает" информацию из нескольких строк данных в одно значение. Агрегирующие функции, такие как COUNT, используются для упрощения и обобщения данных, чтобы сделать их более понятными и удобными для анализа.
Считаем общее количество строк и значений столбца
Представим, мы хотим произвести посчитать общее количество продаж из нашей базы данных:
Для этого выполним следующий запрос:
SELECT COUNT(*) AS total_sales
FROM sales;
Получим такой результат:
В запросе выше мы передали функцию COUNT
со звездочкой в качестве аргумента. Так мы подсчитываем количество всех строк в таблице, независимо от их значений. Поэтому в расчет берутся столбцы и с определенными значениями, и со значением NULL
.
А теперь попробуем заменить звездочку на название какого-либо столбца из таблицы:
SELECT COUNT(sale_date) AS total_sales
FROM sales;
В этом запросе мы использовали функцию COUNT(название_столбца)
. Результат получился тот же самый:
В большинстве случаев COUNT(*)
и COUNT(название_столбца)
дадут одинаковые результаты, но работают они по-разному.
Разница между COUNT(*)
и COUNT(название_столбца)
заключается в том, как они обрабатывают NULL
— нулевые значения:
- Функция
COUNT(*)
подсчитывает все строки в выборке. Для нее не важно, есть строки с нулевым значением или нет - Функция
COUNT(название_столбца)
подсчитывает только строки со значениями, не включая нулевые значения. Если значение столбца равноNULL
, строка с ним не войдет в общее количество
Если столбец не содержит строки с нулевым значением, то функции дадут одинаковые результаты. Но если нулевые значения все таки есть, то функция COUNT(название_столбца)
выдаст меньше строк, чем COUNT(*)
— строки с NULL
не зачтутся.
Считаем количество уникальных значений
С помощью функций COUNT
и DISTINCT
можно решать аналитические задачи, связанные с подсчетом уникальных значений в столбцах.
Для примера представим, что нам нужно узнать количество уникальных категорий товаров в нашем базе. Напишем такой запрос:
SELECT COUNT(DISTINCT category) AS unique_categories
FROM products;
Получим такой результат:
Если мы хотим выбрать уникальные комбинации значений из нескольких столбцов, можно использовать DISTINCT
с несколькими колонками.
Например, подсчитаем уникальные комбинации продуктов и их категорий:
SELECT COUNT(DISTINCT product_name || '_' || category)
AS unique_product_categories
FROM products;
Здесь результат будет таким:
В SQLite, MySQL и некоторых других СУБД нельзя напрямую использовать COUNT(DISTINCT название_столбца1, название_столбца2)
. Вместо этого можно воспользоваться конкатенацией строк. Для этого мы:
- Сначала используем функцию
||
, чтобы для объединить значения из нескольких столбцов - А затем применяем функцию
COUNT(DISTINCT ...)
Выводы
В этом уроке мы рассмотрели функцию COUNT
и выяснили, как она помогает аналитикам в работе. Кратко подведем итоги:
COUNT
— это агрегирующая функция, которая подсчитывает количество элементов в группе или наборе данных- Можно использовать
COUNT(*)
илиCOUNT(название_столбца)
. Эти две функции по-разному работают с нулевыми значениями - Посчитать уникальные значения в столбцах можно с помощью функций
COUNT
иDISTINCT
- Те же функции помогают посчитать уникальные комбинации значений из нескольких столбцов с использованием конкатенации строк
Умение работать с функцией COUNT
помогает аналитику проводить более сложный анализ данных, извлекать уникальные характеристики и обобщать информацию.

Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
- Статья «Как учиться и справляться с негативными мыслями»
- Статья «Ловушки обучения»
- Статья «Сложные простые задачи по программированию»
- Урок «Как эффективно учиться на Хекслете»
- Вебинар «Как самостоятельно учиться»
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.