TGViewer
Аналитика данных / Data Study Аналитика данных / Data Study @data_study · 9.47K subscribers
Post #1266 2.74K
Конструкция фильтрация для функций агрегации

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

Конструкция такая:
функция агрегации FILTER (WHERE условие фильтрации данных для учета в этой метрике)


Например, нам нужно посчитать несколько метрик
- кол-во всех клиентов по customer_id
- кол-во клиентов, у которых источник регистрации будет один из этих: direct, form, vk

Пишем запрос
SELECT 
COUNT(DISTINCT customer_id),
COUNT(DISTINCT customer_id) FILTER (WHERE reg_source IN ('direct', 'form', 'vk')
FROM customers


Можно конечно писать через CASE, но конструкция с фильтром более наглядная, емкая и эффективная в плане оптимизации
SELECT 
COUNT(DISTINCT customer_id),
COUNT(DISTINCT
CASE
WHEN reg_source IN ('direct', 'form', 'vk') THEN customer_id
ELSE NULL
END)
FROM customers


Еще больше фишек SQL на продвинутом курсе, запись в группу
  • 🔥 18
  • 🤓 13
  • 👍 3
  • ❤ 2
More from @data_study
  1. Sep 27, 2026Post #1504
  2. Sep 26, 2026AI ассистентов много не бывает... Установил себе в VS Code еще один плагин SourceCraft, эт…
  3. Sep 24, 2026Поставил себе цель закрывать кружок активности каждый день Листая статистику в приложении…
  4. Sep 23, 2026Давно Маркизы не было в ленте, уверен вы соскучились по шоколадной булке ♥️ P.S. вы ей тож…
  5. Sep 22, 2026Задумываетесь ли вы, что AI-агенты уже сейчас сами принимают решения в физическом мире? И…
  6. Sep 21, 2026Команда DevCrowd запустила ежегодное исследование специалистов по работе с данными. В этом…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →