/* Получить список названий всех фильмов, рекомендованных для просмотра самыми маленькими зрителями.

 * Для этого нужно объединить результаты выполнения двух запросов:

 * 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'




Последнее изменение: воскресенье, 16 июля 2023, 23:15