Что важно знать
- Оконные функции не схлопывают строки, в отличие от GROUP BY.
ROW_NUMBER,RANK,LAG,LEAD, накопительные суммы.- Размножение строк при JOIN «один ко многим» — завышенные суммы.
- Медиана и перцентили —
percentile_cont.
Оконные функции, когортный retention, воронки, сессии, серии и перцентили.
ROW_NUMBER, RANK, LAG, LEAD, накопительные суммы.percentile_cont.Практика. Решить 20 задач на оконные функции на учебной базе заказов.
Практика. Посчитать на SQL когортный retention, воронку покупки и среднюю длительность сессии по таблице событий.
DAU — число уникальных пользователей за день: COUNT(DISTINCT user_id) GROUP BY day. MAU календарный — то же по месяцам. Скользящий MAU на каждый день — уникальные за последние 30…
Для каждого пользователя определить, дошёл ли он до каждого шага в правильном порядке (время шага не раньше предыдущего) и в пределах окна (например, 7 дней от первого шага)…
Найти: GROUP BY ключ HAVING COUNT() > 1. Оставить последнюю версию: пронумеровать строки внутри ключа ROW_NUMBER() OVER (PARTITION BY ключ ORDER BY updated_at DESC) и взять rn = 1…
Классический приём «gaps and islands»: пронумеровать даты активности пользователя ROW_NUMBER и вычесть номер из даты — у дней одной непрерывной серии разность одинакова. Затем…
Связь один-ко-многим размножает строки: заказ с тремя позициями после JOIN с позициями превращается в три строки, и SUM(order.amount) учитывает сумму заказа трижды. Решение …
Определить когорту каждого пользователя (обычно неделя или месяц первого действия), для каждого события посчитать номер периода от начала когорты, затем посчитать уникальных…
На живом собеседовании sotto слышит вопрос интервьюера и показывает короткий ответ и план. Оставьте контакт — пришлём доступ и промокод.