/* Вывести список всех фильмов (film). 

 * По каждому фильму отобразить 3 поля:

 * - название фильма (film.title)

 * - рейтинг фильма (film.rating)

 * - расшифровку рейтинга фильма. Ниже указаны пары: рейтинг - расшифрока рейтинга:

 * G - Нет возрастных ограничений

 * PG - Рекомендуется присутствие родителей

 * PG-13 - Детям до 13 лет просмотр не желателен

 * R - Лицам до 17 лет обязательно присутствие взрослого

 * NC-17 - Лицам до 18 лет просмотр запрещен */



select 

f.title,

f.rating,

case 

when f.rating = 'G' then 'Нет возрастных ограничений'

when f.rating = 'PG' then 'Рекомендуется присутствие родителей'

when f.rating = 'PG-13' then 'Детям до 13 лет просмотр не желателен'

when f.rating = 'R' then 'Лицам до 17 лет обязательно присутствие взрослого'

when f.rating = 'NC-17' then 'Лицам до 18 лет просмотр запрещен'

else 'Неизвестный рейтинг'

end as rating_full

from 

film f;


select 

f.title,

f.rating,

case 

f.rating

when 'G' then 'Нет возрастных ограничений'

when 'PG' then 'Рекомендуется присутствие родителей'

when 'PG-13' then 'Детям до 13 лет просмотр не желателен'

when 'R' then 'Лицам до 17 лет обязательно присутствие взрослого'

when 'NC-17' then 'Лицам до 18 лет просмотр запрещен'

else 'Неизвестный рейтинг'

end as rating_full

from 

film f;


/* Вывести 3 колонки:

 * - название фильма (film.title)

 * - рейтинг фильма (film.rating)

 * - продолжительность фильма

 * 

 * Отобразить только фильмы продолжительностью более 120 (film.length > 120).

 * Для фильмов с рейтингом G при проверке брать удвоенную продолжительность (film.length * 2 > 120).

 * При написании условия отбора фильмов использовать case. */


select 

f.title,

f.rating,

f.length 

from 

film f 

where 

case when f.rating = 'G' then f.length * 2 else f.length end > 120;


select 

f.title,

f.rating,

f.length 

from 

film f 

where 

f.length > case when f.rating = 'G' then 60 else 120 end;


/* Вывести список всех фильмов (film). По каждому фильму нужно отобразить 2 колонки:

 * - название фильма (film.title)

 * - название категории фильма (category.name). Если фильм относится к категории с category_id = 5, 

 * то вместо категории с идентификатором 5 нужно отобразить категорию с category_id = 1.

 * 

 * Связь между таблицей фильмов (film) и таблицей категорий (category) осуществляется посредствам промежуточной таблицы

 * film_category. */


select 

f.title,

c."name" as category_name

from 

film f 

join film_category fc 

on fc.film_id = f.film_id 

join category c 

on case when fc.category_id = 5 then 1 else fc.category_id end = c.category_id 



Последнее изменение: вторник, 13 июля 2021, 15:43