Разбор домашнего задания 7.1
/* Вывести названия всех языков (language.name), на которых нет фильмов в базе данных.
* Использовать функцию not exists. */
select
l."name"
from
"language" l
where
not exists (
select
1
from
film f
where
f.language_id = l.language_id
);
/* Вывести названия всех фильмов (film.title), в которых снимались актеры с фамилией (actor.last_name) начинающейся на 'Chase'.
* Использовать функцию in. */
select
f.title
from
film f
where
f.film_id in (
select
fa.film_id
from
film_actor fa
join actor a
on fa.actor_id = a.actor_id
where
a.last_name like 'Chase%'
);
/* Вывести все фильмы из таблицы film. По каждому фильму отобразить:
* - название фильма (film.title).
* - название языка, на котором этот язык снят (language.name).
*
* Названия языка получить с помощью подзапроса в select. */
select
f.title,
(
select
l."name"
from
"language" l
where
l.language_id = f.language_id
) as language_name
from
film f
/* Вывести список всех фильмов. По каждому фильму вывести:
* - название (film.title).
* - на сколько дней фильм отдается в сдачу (film.rental_duration).
* - сколько всего фильмов с таким же значением rental_duration
*
* С помощью подзапроса в блоке from получить таблицу, в которой для каждого значения rental_duration
* будет посчитано кол-во фильмов.
*/
select
f.title,
f.rental_duration,
frd.cnt as film_rent_dur_cnt
from
film f
join (
select
f2.rental_duration,
count(*) as cnt
from
film f2
group by
f2.rental_duration
) frd
on f.rental_duration = frd.rental_duration