Aritmetika s INTERVAL
Kdybys provozoval/a skutečnou půjčovnu DVD, občas by ses potřeboval/a podívat, které filmy mají zákazníci právě půjčené. V předchozím cvičení jsme viděli, že některé záznamy mají hodnotu NULL ve sloupci return_date – to znamená, že výpůjčka ještě nebyla vrácena.
Každá výpůjčka v tabulce film má přiřazený sloupec rental_duration, který udává počet dní, po které si zákazník může DVD půjčit, než se výpůjčka považuje za opožděnou. V tomto cvičení vyloučíš filmy s hodnotou NULL ve sloupci return_date a převedeš rental_duration na typ INTERVAL. Jako připomenutí – jeden ze způsobů, jak tento převod provést:
SELECT INTERVAL '1' day * timestamp '2019-04-10 12:34:56'
Toto cvičení je součástí kurzu
Funkce pro práci s daty v PostgreSQL
Pokyny k cvičení
- Převeď
rental_durationtím, že ho vynásobíšINTERVALo délce 1 den. - Odečti
rental_dateodreturn_datea vypočítej počet dní výpůjčky (days_rented). - Vyloučit záznamy, kde má
return_datehodnotuNULL.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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;