Найти в Дзене
Информатика

HAVING: одна строчка кода, которая делает из данных — выводы

Там не сидит редактор и не листает вручную миллионы прослушиваний. Там работает запрос. Примерно такой: возьми всех пользователей, посчитай, сколько раз они слушали каждый жанр, и оставь только тех, у кого перевес в сторону инди-рока выше определённого порога. Вот это — HAVING в действии. Представь: у тебя есть таблица с миллионом заказов маркетплейса. Ты хочешь найти клиентов, которые реально тратят деньги — скажем, больше 50 000 рублей суммарно. Не тех, кто купил один раз носки. А тех, на кого стоит тратить бюджет на удержание. Вот здесь и начинается разница между WHERE и HAVING — и это не просто синтаксис, это разная логика мышления. WHERE работает до того, как данные сгруппированы. Он отсекает строки ещё на входе — как фейсконтроль, который не пускает на мероприятие вообще. HAVING работает после группировки. Он смотрит на уже посчитанные итоги и решает: этот клиент проходит, этот — нет. SELECT customer_id, SUM(amount) AS total
FROM orders
GROUP BY customer_id
HAVING SUM(amount) > 5
Оглавление
Spotify и логика HAVING
Spotify и логика HAVING

Ты когда-нибудь задумывался, как Spotify решает, кому показать плейлист «Твой микс недели»?

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

Вот это — HAVING в действии.

Данные без фильтра — это просто шум

Разница WHERE и HAVING
Разница WHERE и HAVING

Представь: у тебя есть таблица с миллионом заказов маркетплейса. Ты хочешь найти клиентов, которые реально тратят деньги — скажем, больше 50 000 рублей суммарно. Не тех, кто купил один раз носки. А тех, на кого стоит тратить бюджет на удержание.

Вот здесь и начинается разница между WHERE и HAVING — и это не просто синтаксис, это разная логика мышления.

WHERE работает до того, как данные сгруппированы. Он отсекает строки ещё на входе — как фейсконтроль, который не пускает на мероприятие вообще.

HAVING работает после группировки. Он смотрит на уже посчитанные итоги и решает: этот клиент проходит, этот — нет.

SELECT customer_id, SUM(amount) AS total
FROM orders
GROUP BY customer_id
HAVING SUM(amount) > 50000;

Три строки — и ты уже знаешь, кто твои топ-клиенты. Без Excel, без ручной сортировки, без «а давайте выгрузим это в таблицу и посмотрим».

Почему это важнее, чем кажется

Порядок выполнения запроса
Порядок выполнения запроса

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

  • Какие категории товаров растут быстрее всего?
  • Какие пользователи не возвращаются после первой покупки?
  • В каких городах конверсия падает?

Все эти вопросы решаются одной связкой: WHERE + GROUP BY + HAVING. Это не академическая конструкция — это рабочий инструмент продуктовой аналитики.

Порядок выполнения запроса выглядит так:

FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

Запомни эту цепочку. Она объясняет, почему нельзя написать WHERE SUM(amount) > 1000 — на этапе WHERE агрегации ещё не существует. База данных буквально ещё не считала суммы.

Реальный кейс: отчёт, который хочет каждый CEO

Извлечение смысла из данных
Извлечение смысла из данных

Допустим, тебе говорят: «Найди клиентов за этот год, у которых больше двух заказов и суммарная покупка выше 5000 рублей. Отсортируй по убыванию».

SELECT
customer_id,
COUNT(order_id) AS orders_count,
SUM(amount) AS total_amount,
ROUND(AVG(amount), 2) AS avg_check
FROM orders
WHERE order_date >= DATE_TRUNC('year', CURRENT_DATE)
GROUP BY customer_id
HAVING
COUNT(order_id) > 2
AND SUM(amount) > 5000
ORDER BY total_amount DESC;

Это не просто «запрос». Это сегментация аудитории. Именно так работают CRM-системы, именно так маркетплейсы решают, кому отправить промокод, а кому — push-уведомление с персональной скидкой.

Одна мысль напоследок

SQL часто воспринимают как скучную техническую обязанность — «ну надо знать, куда деваться». Но на самом деле это язык, на котором ты разговариваешь с данными. А данные — это и есть цифровая реальность: покупки, лайки, клики, маршруты, транзакции.

HAVING — это не просто фильтр. Это момент, когда ты перестаёшь смотреть на сырые числа и начинаешь извлекать смысл. Именно это и делают аналитики, дата-инженеры и продуктовые менеджеры каждый день.

И теперь ты понимаешь, как это работает. 🎯

🔍 Хочешь копнуть глубже? Полный учебный материал с детальными примерами, схемами и крутыми иллюстрациями ждёт тебя на нашем сайте!