Написать запрос, который для каждой строки показывает общее число строк.
Добавить PARTITION BY и посчитать строки в каждой группе.
Сравнить результат с аналогичным GROUP BY.
1
Задание 1. Общее окно
Дана таблица orders с полями order_id, customer_id, order_date, amount. Напишите запрос, который выводит все заказы и общее количество заказов в таблице в отдельном столбце. Используйте оконную функцию без PARTITION BY.
2
Задание 2. Окно по клиенту
Измените запрос из задания 1 так, чтобы для каждого заказа показывалось количество заказов, сделанных тем же клиентом. Используйте PARTITION BY customer_id.
3
Задание 3. Сравнение с GROUP BY
Напишите эквивалентный запрос с GROUP BY customer_id, который возвращает количество заказов по каждому клиенту. Сравните результат с запросом из задания 2: чем отличается число строк и набор столбцов?
4
Задание 4. Порядок в окне
Для таблицы orders напишите запрос, который для каждого заказа клиента вычисляет накопительную сумму (running total) сумм заказов по возрастанию даты заказа. Используйте SUM(amount) OVER (PARTITION BY customer_id ORDER BY order_date).
Проверка понимания
Выберите один вариант ответа. После клика правильный ответ подсветится зелёным.
Вопрос 1
Чем оконная функция отличается от GROUP BY?
Вопрос 2
Для чего нужен OVER()?
Вопрос 3
Что делает SELECT?
Вопрос 4
Почему в SQL важен явный список столбцов?
Вопрос 5
Как лучше форматировать сложный SQL-запрос?
Вопрос 6
Что означает NULL?
Вопрос 7
Почему запросы стоит проверять на маленькой выборке?