Фильтр до и после группировки: почему итог отчёта различается

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

Два пути отбора карточек показывают проверку данных до и после объединения.

Один отчёт, два разных вопроса

Представим таблицу продаж: каждая запись относится к отдельной покупке и содержит город и сумму. Руководитель хочет увидеть итог по городам. Сначала данные объединяют в группы: все покупки одного города дают один показатель. Но слово «отфильтровать» может означать две разные операции. Можно убрать некоторые покупки до подсчёта, а можно убрать из готового отчёта целые города.

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

Фильтр исходных записей меняет расчёт

Допустим, в Казани было две оплаченные покупки на 100 и 200 условных рублей и одна отменённая на 500. Если до группировки оставить только оплаченные покупки, сумма Казани составит 300. Отменённая запись не участвовала в расчёте. Так же можно сначала оставить только покупки за нужный месяц или из определённого канала, а потом получить итоги по городам.

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

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

Теперь представим, что все допустимые покупки уже посчитаны по городам. Пользователь оставляет только города, где сумма выше 250. Казань с итогом 300 остаётся, город с итогом 180 исчезает целиком. Его покупки не «вычитаются» из суммы Казани: город просто не показывается отдельной строкой.

Такой отбор отвечает на вопрос «какие города достигли порога». Он применяется к уже полученным групповым показателям. В описании обработки таблиц PostgreSQL эти этапы также разделены: сначала формируется исходный набор и группы, затем можно ограничивать итоговые группы.

Условный расчёт без путаницы

Возьмём два города. В первом продажи 100 и 200, во втором — 80 и 100. Если сначала отбросить покупки меньше 100, останутся 100 и 200 в первом городе и 100 во втором. Итоги будут 300 и 100. Если же сначала сложить все покупки, получатся 300 и 180. Затем отбор городов с итогом больше 200 покажет только первый город с числом 300.

Пример условный, но он показывает главное: порог для отдельной покупки и порог для общей суммы не взаимозаменяемы. Иногда оба фильтра нужны одновременно. Тогда сначала определяют допустимые продажи, потом считают итог и лишь после этого оставляют группы, отвечающие требованию.

Как правильно сформулировать запрос к отчёту

Вместо фразы «покажите города с продажами больше 200» уточните: речь о каждой покупке или об общей сумме города? Нужно ли исключать возвраты до подсчёта? Хотите видеть все города с изменённой суммой или только города выше порога? Эти вопросы помогают избежать ситуации, когда технически правильный отчёт отвечает не на тот бизнес-вопрос.

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

По теме

Что изучить дальше

Если хочется разобраться в том, как применять эти идеи на практике, посмотрите курс SQL инженер. Сопоставьте программу со своими задачами: один материал объясняет принцип, но не заменяет работу с реальными данными.

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

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

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

Источники

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

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

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

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

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

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

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

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

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

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

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