Домашнее задание (2 мин.)
Вывести список всех фильмов (film). По каждому фильму отобразить поля:
- название (film.title).
- кол-во дней, на которые фильм дается в аренду (film.rental_duration).
- общее кол-во фильмов, которые даются в аренду на такое же кол-во дней (с таким же значением film.rental_duration)
Вывести список всех фильмов (film). По каждому фильму отобразить поля:
- название (film.title).
- кол-во дней, на которые фильм дается в аренду (film.rental_duration).
- продолжительность фильма (film.length).
- порядковый номер фильма в порядке уменьшения продолжительности (film.length). Нумеруем в рамках групп фильмов с одинаковым значением film.rental_duration.
У каждого фильма должен быть свой уникальный номер. Фильмы с одинаковой продолжительностью сортируем по названию (film.title) в алфавитном порядке.
(Задача со *) На основе таблицы платежей (payment) посчитать накопительным итогом общую сумму платежей (sum(payment.amount)) на каждую дату, на которую были платежи. Вывести поля:
- дата (payment.payment_date::date). Одну дату выводим в одной строке.
- общая сумма всех платежей (sum(payment.amount)) за все даты до текущей, а также за текущую дату.
Задания для повторения и закрепления пройденных тем
Запросите адреса клиентов проката с индексом(postal_code), начинающимся на 6 ,а также необходимо включить адреса в городе (city.city) Лондон. В итоговую таблицу выведите индекс(postal_code), адрес (address). Используйте union, join, like.
Дополнительные задачи по теме оконных функций:1. По каждому платежу (одному платежу соответствует одна строка в таблице payment) вывести 1 строку с полями:
- дата платежа
- сумма платежа
- сумма всех платежей за ту же дату
- процент текущего платежа относительно всех платежей за ту же дату
2. Вывести список уникальный имен актеров (поле first_name в таблице actor). Дубликаты удалить без использования Distinct, а с с помощью применения оконных функций. Варианты удаления с помощью оконных функций (сделать с помощью любого из методов):
- с помощью row_number() пронумеровав строки с одинаковым именем (actor.first_name) последовательными номерами 1, 2, 3 и т.д., а затем оставив только строки под номерами 1
- с помощью lag/lead
- с помощью count(order by)
3. Получить список всех фильмов, за прокат которых были платежи '2007-04-30' (payment.payment_date::date = '2007-04-30') и вывести список их уникальных названий (film.title). Дубликаты нужно удалять с применением оконной функции row_number (пронумеровать фильмы с одинаковыми названиями последовательно 1, 2, 3, …) и оставить только строки под номером 1.
4*. По каждому платежу (одному платежу соответствует одна строка в таблице payment) вывести 1 строку с полями:
- дата платежа
- сумма платежа
- сумма всех платежей за текущую дату и 2 предыдущие
Подсказка: использовать sum(...) over(partition by range between [значение типа interval] and [значение типа interval]). Пример использования есть в документации: