Выбор ответа Middle SQL для аналитика обновлено
Оконная функция и GROUP BY
Вопрос
Чем оконная функция SUM(amount) OVER (PARTITION BY client_id) отличается от SUM(amount) ... GROUP BY client_id?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Окно считает по группе, но сохраняет все строки, GROUP BY схлопывает. Оконная функция добавляет к каждой строке значение, посчитанное по её окну, строки не пропадают.
Варианты ответа
- GROUP BY считает быстрее, поэтому окна на практике почти не используют
- Окно считает по группе, но сохраняет все строки, GROUP BY схлопываетправильный ответ
- Окно работает только вместе с ORDER BY внутри OVER
- Ничем: это синонимы, разница только в синтаксисе записи
Разбор
Оконная функция добавляет к каждой строке значение, посчитанное по её окну, строки не пропадают. GROUP BY оставляет одну строку на группу. ORDER BY в окне нужен для нарастающих итогов и ранжирования, но не обязателен для SUM по партиции. Скорость зависит от задачи, окна используют постоянно.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.