Arytmetyka na typie INTERVAL
Gdybyś prowadzić prawdziwy sklep z wypożyczalnią DVD, zdarzałyby się sytuacje, w których trzeba by sprawdzić, które filmy są aktualnie wypożyczone przez klientów. W poprzednim ćwiczeniu niektóre rekordy w wynikach miały wartość NULL w kolumnie return_date – oznaczało to, że wypożyczenie jest nadal aktywne.
Każde wypożyczenie w tabeli film ma powiązaną kolumnę rental_duration, która określa liczbę dni, przez które klient może trzymać DVD, zanim wypożyczenie zostanie uznane za spóźnione. W tym ćwiczeniu wykluczysz filmy z wartością NULL w kolumnie return_date i przekształcisz rental_duration na typ INTERVAL. Poniżej przypomnienie jednej z metod wykonania tej konwersji.
SELECT INTERVAL '1' day * timestamp '2019-04-10 12:34:56'
To ćwiczenie jest częścią kursu
Funkcje do manipulowania danymi w PostgreSQL
Instrukcje do ćwiczenia
- Przekształć
rental_duration, mnożąc tę wartość przezINTERVALwynoszący 1 dzień. - Odejmij
rental_dateodreturn_date, aby wyliczyć liczbę dni wypożyczenia (days_rented). - Wyklucz wypożyczenia, w których
return_datema wartośćNULL.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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;