В таблице метрик есть dt, platform, dau. Нужно вывести значение dau за предыдущий день для той же платформы, чтобы посчитать дневное изменение. Какое выражение верное?
A
LEAD(dau) OVER (PARTITION BY platform ORDER BY dt)B
LAG(dau) OVER (PARTITION BY platform) без ORDER BYC
LAG(dau) OVER (ORDER BY dt) без PARTITION BYD
LAG(dau) OVER (PARTITION BY platform ORDER BY dt)Правильный ответ.
LAG берёт предыдущее значение по ORDER BY внутри каждой группы, заданной PARTITION BY.Разбор
Чтобы получить «вчерашний» dau, нужно определить порядок по времени через ORDER BY dt. Чтобы сравнение шло внутри одной платформы, нужно PARTITION BY platform. Поэтому корректно: LAG(dau) OVER (PARTITION BY platform ORDER BY dt). Без сортировки понятие «предыдущий день» не определено, без разбиения по платформе вы будете сравнивать разные платформы, а LEAD берёт следующее значение, а не предыдущее.
Проверь себя · 1/3разбор после ответа
Хотите добавить к каждой транзакции колонку «доля от общей суммы транзакций этого пользователя» и при этом не терять детализацию по транзакциям. Какой фрагмент корректен?
Ещё вопросы по теме «Оконные функции»
- В одной категории 4 товара с выручкой 100, 100, 90 и 80. Вычисляем `RANK() OVER (ORDER BY revenue DESC)`. Какие ранги получат строки при сортировке по убыванию выручки?
- Вы ищете последнюю транзакцию пользователя, используя `ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY paid_at DESC)` и оставляя `row_number = 1`. Что верно, если у пользователя две транзакции с одинаковым `paid_at`?
- Вы делаете рейтинг товаров по выручке внутри категории. Если два товара делят 2 место, следующий товар должен получить 3 место (без пропуска). Какая функция подходит лучше всего?
- В каждой категории нужно выбрать товары с тремя наибольшими различными значениями выручки (`revenue`), включая все товары, которые делят эти значения при равенстве. Какой вариант даст нужный результат?
- Нужно пронумеровать заказы каждого пользователя по времени покупки, начиная с 1, чтобы найти его 1-й, 2-й, 3-й заказ. Какое выражение подходит?
- Все вопросы по «Оконные функции» →