View difference between Paste ID: 5YJfMQWN and L8qf8rPf
SHOW: | | - or go back to the newest paste.
1-
/*Определите, летом какого года общая выручка в магазине была максимальной. Затем проанализируйте данные за этот год по странам. Выгрузите таблицу с полями:
1+
/*Перепишите один из своих прошлых запросов с использованием оператора WITH. 
2-
country — название страны;
2+
Выведите топ-40 самых длинных фильмов, аренда которых составляет больше 2 долларов. Проанализируйте данные о возрастных рейтингах отобранных фильмов. Выгрузите в итоговую таблицу следующие поля:
3-
total_invoice — число заказов, оформленных в этой стране в тот год, когда общая выручка за лето была максимальной;
3+
возрастной рейтинг (поле rating);
4-
total_customer — число клиентов, зарегистрированных в этой стране.
4+
минимальное и максимальное значения длительности (поле length), назовите поля min_length и max_length соответственно;
5-
Отсортируйте таблицу по убыванию значений в поле total_invoice, а затем добавьте сортировку по названию страны в лексикографическом порядке.
5+
среднее значение длительности (поле length), назовите поле avg_length;
6
минимум, максимум и среднее для цены просмотра (поле rental_rate), назовите поля min_rental_rate, max_rental_rate, avg_rental_rate соответственно.
7
Отсортируйте среднюю длительность фильма по возрастанию.
8-
--задача выполняется в два этапа:
8+
9-
--1. сначала опредеяем лучшее лето
9+
10-
SELECT EXTRACT(YEAR FROM CAST(invoice_date AS date)) AS YEAR,
10+
WITH top_40 AS
11-
       SUM(total)
11+
  (SELECT film_id
12-
FROM invoice
12+
   FROM movie
13-
WHERE EXTRACT(MONTH FROM CAST(invoice_date AS date)) IN (6, 7, 8)
13+
   WHERE rental_rate > 2
14-
GROUP BY EXTRACT(YEAR FROM CAST(invoice_date AS date))
14+
   ORDER BY length DESC
15-
ORDER BY SUM(total) DESC;
15+
   LIMIT 40)
16
SELECT rating,
17-
-затем анализируем данные за этот год по странам
17+
       MIN(length) AS min_length,
18-
SELECT sub_one.country,
18+
       MAX(length) AS max_length,
19-
       sub_one.total_invoice,
19+
       AVG(length) AS avg_length,
20-
       sub_two.total_customer
20+
       MIN(rental_rate) AS min_rental_rate,
21-
FROM
21+
       MAX(rental_rate) AS max_rental_rate,
22-
  (SELECT invoice.billing_country AS country,
22+
       AVG(rental_rate) AS avg_rental_rate
23-
          COUNT(invoice.total) AS total_invoice
23+
FROM movie
24-
   FROM invoice
24+
INNER JOIN top_40 ON movie.film_id = top_40.film_id
25-
   WHERE EXTRACT(YEAR FROM CAST(invoice_date AS date)) = 2011
25+
GROUP BY rating
26-
   GROUP BY country) AS sub_one
26+
ORDER BY AVG(length);