Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Подзапросы во FROM Добавьте запрос из предыдущего задания в подзапрос. Посчитайте нужные значения.

Юлия Михайлюк Ученик (166), на голосовании 7 месяцев назад
Найдите средние значения полей, в которых указаны минимальная и максимальная длительность отобранных фильмов. Отобразите только два этих поля. Назовите их avg_min_length и avg_max_length соответственно.
SELECT top.rating,
MIN(top.length) AS min_length,
MAX(top.length) AS max_length,
AVG(top.length) AS avg_length,
MIN(top.rental_rate) AS min_rental_rate,
MAX(top.rental_rate) AS max_rental_rate,
AVG(top.rental_rate) AS avg_rental_rate
FROM
(SELECT title,
rental_rate,
length,
rating
FROM movie
WHERE rental_rate > 2
ORDER BY length DESC
LIMIT 40) AS top
GROUP BY top.rating
ORDER BY avg_length;
Голосование за лучший ответ
Malenkiuprinter Kpachemokoc Знаток (384) 8 месяцев назад
 SELECT 
AVG(CASE WHEN length = min_length THEN length END) AS avg_min_length,
AVG(CASE WHEN length = max_length THEN length END) AS avg_max_length
FROM (
SELECT
top.rating,
MIN(top.length) AS min_length,
MAX(top.length) AS max_length,
AVG(top.length) AS avg_length,
MIN(top.rental_rate) AS min_rental_rate,
MAX(top.rental_rate) AS max_rental_rate,
AVG(top.rental_rate) AS avg_rental_rate
FROM
(
SELECT title,
rental_rate,
length,
rating
FROM movie
WHERE rental_rate > 2
ORDER BY length DESC
LIMIT 40
) AS top
GROUP BY top.rating
) AS subquery;
В этом запросе:

Внутренний подзапрос выбирает 40 фильмов с самыми длинными длительностями и фильтрует фильмы с арендной ставкой больше 2.
Затем этот подзапрос используется для вычисления минимальной и максимальной длительности фильмов во внешнем подзапросе.
Функция AVG используется с условием CASE для вычисления средних значений только для тех фильмов, которые имеют минимальную или максимальную длительность, а остальные значения игнорируются.
Похожие вопросы