Арифметика з INTERVAL
Якби ви керували реальною крамницею з прокату DVD, час від часу потрібно було б визначати, які назви фільмів зараз орендовані клієнтами. У попередній вправі ми бачили, що деякі записи в результатах мали значення NULL у полі return_date. Це означає, що прокат ще не закрито.
Кожен запис про прокат у таблиці film має пов'язаний стовпець rental_duration, який означає кількість днів, протягом яких клієнт може орендувати DVD, перш ніж прокат вважатиметься простроченим. У цьому прикладі ви виключите фільми, у яких return_date має значення NULL, а також перетворите rental_duration на тип INTERVAL. Ось нагадування про один зі способів виконати таке перетворення.
SELECT INTERVAL '1' day * timestamp '2019-04-10 12:34:56'
Ця вправа є частиною курсу
Функції для обробки даних у PostgreSQL
Інструкції до вправи
- Перетворіть
rental_duration, помноживши його наINTERVALтривалістю 1 день. - Відніміть
rental_dateвідreturn_date, щоб обчислити кількістьdays_rented. - Виключіть прокати, де
return_dateмає значенняNULL.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
SELECT
f.title,
-- Convert the rental_duration to an interval
___ '1' ___ * ___.___,
-- Calculate the days rented as we did previously
r.return_date - ___.___ AS days_rented
FROM film AS f
INNER JOIN inventory AS i ON f.film_id = i.film_id
INNER JOIN rental AS r ON i.inventory_id = r.inventory_id
-- Filter the query to exclude outstanding rentals
WHERE r.return_date ___ ___ ___
ORDER BY f.title;