Перепишите один из своих прошлых запросов с использованием ключевого слова WITH.
Выведите топ-40 самых длинных фильмов, аренда которых составляет больше 2 долларов. Проанализируйте данные о возрастных рейтингах отобранных фильмов. Выгрузите в итоговую таблицу следующие поля:
- возрастной рейтинг (поле
rating); - минимальное и максимальное значения длительности (поле
length), назовите поляmin_lengthиmax_lengthсоответственно; - среднее значение длительности (поле
length), назовите полеavg_length; - максимум, минимум и среднее для цены просмотра (поле
rental_rate), назовите поляmin_rental_rate,max_rental_rate,avg_rental_rateсоответственно.
Отсортируйте среднюю длительность фильма по возрастанию.
WITH
f AS (SELECT title,
rental_rate,
length,
rating
FROM movie
WHERE rental_rate > 2
ORDER BY length DESC
LIMIT 40)
SELECT rating,
MIN(f.length) AS min_length,
MAX(f.length) AS min_length,
AVG(f.length) AS avg_length,
MIN(f.rental_rate) AS min_rental_rate,
MAX(f.rental_rate) AS max_rental_rate,
AVG(f.rental_rate) AS avg_rental_rate
FROM f
GROUP BY f.rating
ORDER BY avg_length;
Результат
| rating | min_length | avg_length | min_rental_rate | max_rental_rate | avg_rental_rate |
|---|---|---|---|---|---|
| PG | 185 | 181.8 | 2.99 | 4.99 | 4.19 |
| NC-17 | 184 | 181.9 | 2.99 | 4.99 | 3.99 |
| R | 185 | 182.286 | 2.99 | 4.99 | 4.41857 |
| PG-13 | 185 | 182.6 | 2.99 | 4.99 | 3.79 |
| G | 185 | 182.625 | 2.99 | 4.99 | 3.99 |
Работать с общими табличными выражениями намного проще, чем с подзапросами.