Выбор ответа Middle SQL для аналитика обновлено

Оконная функция и GROUP BY

Вопрос

Чем оконная функция SUM(amount) OVER (PARTITION BY client_id) отличается от SUM(amount) ... GROUP BY client_id?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Окно считает по группе, но сохраняет все строки, GROUP BY схлопывает. Оконная функция добавляет к каждой строке значение, посчитанное по её окну, строки не пропадают.

Варианты ответа

  1. GROUP BY считает быстрее, поэтому окна на практике почти не используют
  2. Окно считает по группе, но сохраняет все строки, GROUP BY схлопываетправильный ответ
  3. Окно работает только вместе с ORDER BY внутри OVER
  4. Ничем: это синонимы, разница только в синтаксисе записи

Разбор

Оконная функция добавляет к каждой строке значение, посчитанное по её окну, строки не пропадают. GROUP BY оставляет одну строку на группу. ORDER BY в окне нужен для нарастающих итогов и ранжирования, но не обязателен для SUM по партиции. Скорость зависит от задачи, окна используют постоянно.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.