Часть 1.
адание 1. Сделайте запрос к таблице payment и с помощью оконных функций добавьте вычисляемые колонки согласно условиям:
Пронумеруйте все платежи от 1 до N по дате платежа
Пронумеруйте платежи для каждого покупателя, сортировка платежей должна быть по дате платежа
Посчитайте нарастающим итогом сумму всех платежей для каждого покупателя, сортировка должна быть сперва по дате платежа, а затем по размеру платежа от наименьшей к большей
Пронумеруйте платежи для каждого покупателя по размеру платежа от наибольшего к меньшему так, чтобы платежи с одинаковым значением имели одинаковое значение номера.
Можно составить на каждый пункт отдельный SQL-запрос, а можно объединить все колонки в одном запросе.
Ожидаемый результат запроса: letsdocode.ru...in/5-1.png
Задание 2. С помощью оконной функции выведите для каждого покупателя стоимость платежа и стоимость платежа из предыдущей строки со значением по умолчанию 0.0 с сортировкой по дате платежа.
Ожидаемый результат запроса: letsdocode.ru...in/5-2.png
Задание 3. С помощью оконной функции определите, на сколько каждый следующий платеж покупателя больше или меньше текущего.
Ожидаемый результат запроса: letsdocode.ru...in/5-3.png
Задание 4. С помощью оконной функции для каждого покупателя выведите данные о его последней оплате аренды.
Ожидаемый результат запроса: letsdocode.ru...in/5-4.png
Дополнительная часть:
Задание 1. С помощью оконной функции выведите для каждого сотрудника сумму продаж за август 2005 года с нарастающим итогом по каждому сотруднику и по каждой дате продажи (без учёта времени) с сортировкой по дате.
Ожидаемый результат запроса: letsdocode.ru...in/5-5.png
Задание 2. 20 августа 2005 года в магазинах проходила акция: покупатель каждого сотого платежа получал дополнительную скидку на следующую аренду. С помощью оконной функции выведите всех покупателей, которые в день проведения акции получили скидку.
Ожидаемый результат запроса: letsdocode.ru...in/5-6.png
Задание 3. Для каждой страны определите и выведите одним SQL-запросом покупателей, которые попадают под условия:
· покупатель, арендовавший наибольшее количество фильмов;
· покупатель, арендовавший фильмов на самую большую сумму;
· покупатель, который последним арендовал фильм.
Результат домашнего задания
Заполните ответами шаблон для сдачи ДЗ в формате .sql.
Часть 2.
Задание 1. Напишите SQL-запрос, который выводит всю информацию о фильмах со специальным атрибутом “Behind the Scenes”.
Ожидаемый результат запроса: letsdocode.ru...in/6-1.png
Задание 2. Напишите ещё 2 варианта поиска фильмов с атрибутом “Behind the Scenes”, используя другие функции или операторы языка SQL для поиска значения в массиве.
Ожидаемый результат запроса: letsdocode.ru...in/6-2.png
Задание 3. Для каждого покупателя посчитайте, сколько он брал в аренду фильмов со специальным атрибутом “Behind the Scenes”.
Обязательное условие для выполнения задания: используйте запрос из задания 1, помещённый в CTE.
Ожидаемый результат запроса: letsdocode.ru...in/6-3.png
Задание 4. Для каждого покупателя посчитайте, сколько он брал в аренду фильмов со специальным атрибутом “Behind the Scenes”.
Обязательное условие для выполнения задания: используйте запрос из задания 1, помещённый в подзапрос, который необходимо использовать для решения задания.
Ожидаемый результат запроса: letsdocode.ru...in/6-4.png
Задание 5. Создайте материализованное представление с запросом из предыдущего задания и напишите запрос для обновления материализованного представления.
Задание 6. С помощью explain analyze проведите анализ стоимости выполнения запросов из предыдущих заданий и ответьте на вопросы:
С каким оператором или функцией языка SQL, используемыми при выполнении домашнего задания, поиск значения в массиве затрачивает меньше ресурсов системы;
Какой вариант вычислений затрачивает меньше ресурсов системы: с использованием CTE или с использованием подзапроса.
Дополнительная часть:
Задание 1. Откройте по ссылке SQL-запрос.
Сделайте explain analyze этого запроса.
Основываясь на описании запроса, найдите узкие места и опишите их.
Сравните с вашим запросом из основной части (если ваш запрос изначально укладывается в 15мс — отлично!).
Сделайте построчное описание explain analyze на русском языке оптимизированного запроса. Описание строк в explain можно посмотреть по ссылке.
Задание 2. Используя оконную функцию, выведите для каждого сотрудника сведения о первой его продаже.
Ожидаемый результат запроса: letsdocode.ru...in/6-5.png
Задание 3. Для каждого магазина определите и выведите одним SQL-запросом следующие аналитические показатели:
день, в который арендовали больше всего фильмов (в формате год-месяц-день);
количество фильмов, взятых в аренду в этот день;
день, в который продали фильмов на наименьшую сумму (в формате год-месяц-день);
сумму продажи в этот день.
Юлия
КемГу
Оставался всего день до сдачи объемного и сложного задания, никто не решался брать данный ...
Сабина
МГЮА имени О.Е. Кутафина
Анна - чудо исполнитель. Необходимо было повысить оригинальность, честно говоря, то немног...
Вероника
Уральский государственный педагогический университет
Попросила сделать раньше срока, Анна согласилась и выполнила мою просьбу. Очень довольна р...
Екатерина
СГУ
Спасибо огромное, не совсем точно было сделано, но зачёт мне поставили и это самое главное...