Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Агрегация с помощью оператора COUNT Основы аналитики на SQL

Агрегация (COUNT)

На начальном этапе исследования данных аналитику зачастую необходимо банально подсчитать количество элементов в группе или наборе данных и представить эту информацию в виде одного числа. Для решения задачи такого рода полезно начать работу с использования агрегирующей функции COUNT.

Функция COUNT называется агрегирующей, потому что она собирает или "складывает" информацию из нескольких строк данных в одно значение. Агрегирующие функции, такие как COUNT, используются для упрощения и обобщения данных, чтобы сделать их более понятными и удобными для анализа.

Считаем общее количество строк и значений столбца

Представим, мы хотим произвести посчитать общее количество продаж из нашей базы данных:

Untitled

Для этого выполним следующий запрос:

SELECT COUNT(*) AS total_sales
FROM sales;

Получим такой результат:

Untitled

В запросе выше мы передали функцию COUNT со звездочкой в качестве аргумента. Так мы подсчитываем количество всех строк в таблице, независимо от их значений. Поэтому в расчет берутся столбцы и с определенными значениями, и со значением NULL.

А теперь попробуем заменить звездочку на название какого-либо столбца из таблицы:

SELECT COUNT(sale_date) AS total_sales
FROM sales;

В этом запросе мы использовали функцию COUNT(название_столбца). Результат получился тот же самый:

Untitled

В большинстве случаев COUNT(*) и COUNT(название_столбца) дадут одинаковые результаты, но работают они по-разному.

Разница между COUNT(*) и COUNT(название_столбца) заключается в том, как они обрабатывают NULL — нулевые значения:

  • Функция COUNT(*) подсчитывает все строки в выборке. Для нее не важно, есть строки с нулевым значением или нет
  • Функция COUNT(название_столбца) подсчитывает только строки со значениями, не включая нулевые значения. Если значение столбца равно NULL, строка с ним не войдет в общее количество

Если столбец не содержит строки с нулевым значением, то функции дадут одинаковые результаты. Но если нулевые значения все таки есть, то функция COUNT(название_столбца) выдаст меньше строк, чем COUNT(*) — строки с NULL не зачтутся.

Считаем количество уникальных значений

С помощью функций COUNT и DISTINCT можно решать аналитические задачи, связанные с подсчетом уникальных значений в столбцах.

Для примера представим, что нам нужно узнать количество уникальных категорий товаров в нашем базе. Напишем такой запрос:

SELECT COUNT(DISTINCT category) AS unique_categories
FROM products;

Получим такой результат:

Untitled

Если мы хотим выбрать уникальные комбинации значений из нескольких столбцов, можно использовать DISTINCT с несколькими колонками.

Например, подсчитаем уникальные комбинации продуктов и их категорий:

SELECT COUNT(DISTINCT product_name || '_' || category)
AS unique_product_categories
FROM products;

Здесь результат будет таким:

Untitled

В SQLite, MySQL и некоторых других СУБД нельзя напрямую использовать COUNT(DISTINCT название_столбца1, название_столбца2). Вместо этого можно воспользоваться конкатенацией строк. Для этого мы:

  • Сначала используем функцию ||, чтобы для объединить значения из нескольких столбцов
  • А затем применяем функцию COUNT(DISTINCT ...)

Выводы

В этом уроке мы рассмотрели функцию COUNT и выяснили, как она помогает аналитикам в работе. Кратко подведем итоги:

  • COUNT — это агрегирующая функция, которая подсчитывает количество элементов в группе или наборе данных
  • Можно использовать COUNT(*) или COUNT(название_столбца). Эти две функции по-разному работают с нулевыми значениями
  • Посчитать уникальные значения в столбцах можно с помощью функций COUNT и DISTINCT
  • Те же функции помогают посчитать уникальные комбинации значений из нескольких столбцов с использованием конкатенации строк

Умение работать с функцией COUNT помогает аналитику проводить более сложный анализ данных, извлекать уникальные характеристики и обобщать информацию.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Об обучении на Хекслете

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 5 025 ₽ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 28 сентября

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Изображение Тото

Задавайте вопросы, если хотите обсудить теорию или упражнения. Команда поддержки Хекслета и опытные участники сообщества помогут найти ответы и решить задачу