Разбор домашнего задания 6.1
/* Получить список названий всех фильмов, рекомендованных для просмотра самыми маленькими зрителями.
* Для этого нужно объединить результаты выполнения двух запросов:
* 1. получить все фильмы с рейтингом G (f.rating = 'G')
* 2. получить все фильмы, в которых снимался актер с фамилией Grant (actor.last_name = 'Grant'),
* поскольку этот актер по умолчанию снимается только в фильмах для самых маленьких вне зависимости от проставленного рейтинга.
*
* Если какой-то фильм попадет в оба запроса, то его нужно вывести дважды
*
* Решить задачу с использованием union/union all/except/intersect
*/
select
f.title
from
film f
where
f.rating = 'G'
union all
select
f.title
from
film f
join film_actor fa using(film_id)
join actor a using(actor_id)
where
a.last_name = 'Grant';
/* Получить список названий всех фильмов (film.title) с рейтингом G (film.rating = 'G'),
* в которых снимался актер с фамилией Grant (actor.last_name = 'Grant').
*
* Решить задачу с использованием union/union all/except/intersect
*/
select
f.title
from
film f
where
f.rating = 'G'
intersect
select
f.title
from
film f
join film_actor fa using(film_id)
join actor a using(actor_id)
where
a.last_name = 'Grant';
/* Получить список названий всех фильмов (film.title) с рейтингом НЕ G (film.rating <> 'G'),
* в которых снимался актер с фамилией Grant (actor.last_name = 'Grant').
*
* Решить задачу с использованием union/union all/except/intersect
*/
select
f.title
from
film f
join film_actor fa using(film_id)
join actor a using(actor_id)
where
a.last_name = 'Grant'
except
select
f.title
from
film f
where
f.rating = 'G';
Решение задания для повторения
SELECT
c.last_name,
a.address,
a.district
FROM customer c
JOIN address a
ON c.address_id =a.address_id
WHERE district ='California'