Почему сумма уникальных клиентов по месяцам не равна итогу за год

Почему месячные показатели уникальных клиентов нельзя просто сложить. Понятный пример пересечения групп и правила проверки общего итога.

Пересекающиеся оранжевые круги с фигурками клиентов показывают общих участников двух групп

Две покупки не всегда означают двух покупателей

Представим условный магазин. В январе у него купили Анна, Борис и Вера. В феврале — Борис, Вера и Глеб. В каждом месяце по три покупателя. Если сложить месячные значения, получится шесть, но за два месяца магазин обслужил четырёх разных людей.

Борис и Вера попали в оба месяца. При подсчёте за общий период их нужно учитывать по одному разу. Поэтому итог по уникальным клиентам может быть меньше суммы строк отчёта, и это само по себе не ошибка. Важно понимать, какие группы пересекаются и кого считают одной сущностью.

Уникальность относится к выбранному набору

Уникальный клиент — это клиент, которого учитывают один раз внутри определённых границ. Такими границами могут быть месяц, регион, категория товаров или весь период отчёта. Человек способен быть уникальным внутри нескольких групп одновременно: например, купить и книгу, и канцтовары.

В документации Microsoft по подсчёту различных значений отдельно отмечено, что общий результат не складывается из промежуточных итогов. Причина связана с повторным присутствием одной сущности в разных группах. Это свойство показателя, а не особенность оформления таблицы.

Что именно считается клиентом

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

Поэтому подпись «клиенты» требует определения. Уточните, считаются ли покупатели с завершённой оплатой, все зарегистрированные пользователи или все карточки, где есть контакт. Не объединяйте записи только по одинаковому имени: два разных человека могут называться одинаково, а один человек может по-разному записать своё имя.

Почему готовых месячных чисел недостаточно

Если сохранились только два значения по три клиента, узнать общий итог однозначно нельзя. Группы могут полностью совпадать — тогда всего три клиента. Могут не пересекаться — тогда шесть. Наш пример с четырьмя находится между этими случаями.

Для точного пересчёта нужны сведения о составе групп либо подходящее представление, которое сохраняет информацию об их пересечении. Простая таблица месячных количеств такой информации не содержит. При подготовке отчётов полезно заранее выяснить, потребуется ли пользователям менять период или объединять категории.

Чем отличаются строки, заполненные значения и клиенты

Одна таблица может содержать несколько покупок одного клиента. Подсчёт строк ответит на вопрос о количестве записей, а подсчёт различных клиентских идентификаторов — о количестве представленных клиентов. Если идентификатор отсутствует, нужно отдельно договориться, что делать с такой покупкой.

В документации PostgreSQL об агрегатных выражениях различаются обработка всех значений и обработка различных значений. Не стоит автоматически переносить поведение пустых значений из одного инструмента в другой. Правило отчёта должно быть описано словами и проверено на примере, где встречаются пропуски.

Как объяснить итог пользователю отчёта

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

В подписи к отчёту укажите период, условие включения и единицу подсчёта. Если руководителю нужна сумма месячных посещений, её можно показать отдельным показателем, но не называть количеством разных клиентов за год. Разделение названий избавляет команду от регулярных споров о вполне корректных, но разных числах.

Читайте также

Обучение в NovaData

Если тема связана с задачами вашей работы, изучите SQL инженер в NovaData. Сопоставьте программу, требования к подготовке и формат с тем, что хотите научиться делать. Карточка ниже поможет познакомиться с профильным направлением.

SQL инженер
Курс
Доступ сразу
SQL инженер

SQL инженер — это специалист, который работает с базами данных, разрабатывает запросы, оптимизирует хранение данных и обеспечивает эффективную работу с информацией в компаниях.

С нуля до junior
Теория и практика
Диплом по окончании
500
₽/мес
УЗНАТЬ ПОДРОБНЕЕ

Источники

Читайте также

Обучить команду или нанять специалиста по данным: как выбрать
47

Обучить команду или нанять специалиста по данным: как выбрать

Как руководителю определить, какие навыки развивать внутри команды, когда нужна новая роль и почему обучение и найм часто дополняют друг друга.
Вертикальное и горизонтальное масштабирование данных: в чём разница
46

Вертикальное и горизонтальное масштабирование данных: в чём разница

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

Журнал изменений данных: как выяснить, кто и когда изменил набор

Что можно узнать из журнала действий с данными, как он помогает разбирать ошибки и почему его записи не показывают всю историю сами по себе.

Занятия проходят
в Нова Дата СДО

Вебинары, практика и общение с преподавателем — в одном окне браузера.

Посмотреть интерфейс платформы
Календарь обучения в Нова Дата СДО
Курсы студента в Нова Дата СДО
Редактор кода для практики в Нова Дата СДО
Вебинары и расписание Ваши курсы Код в браузере
Нова Дата СДО — в реестре российского ПОРеестровая запись № 34931
Заявка отправлена
Отправим вам подборку курсов в течение 5 минут. С вами также свяжется наш специалист и даст карьерную консультацию.
Персональный промокод
На курс «Инженер по парсингу данных»
Введите код при оплате, чтобы применить скидку к программе.