INTERVAL-rekenkunde
Als je een echte DVD-verhuurwinkel zou runnen, zijn er momenten waarop je moet bepalen welke filmtitels op dit moment bij klanten zijn verhuurd. In de vorige oefening zagen we dat sommige records in de resultaten een NULL-waarde hadden voor return_date. Dat komt omdat de verhuur nog openstond.
Elke verhuur in de tabel film heeft een bijbehorende kolom rental_duration die het aantal dagen weergeeft dat een DVD door een klant gehuurd kan worden voordat deze te laat is. In dit voorbeeld sluit je films uit die een NULL-waarde hebben voor return_date en zet je bovendien rental_duration om naar het type INTERVAL. Ter herinnering: hieronder staat één manier om die conversie uit te voeren.
SELECT INTERVAL '1' day * timestamp '2019-04-10 12:34:56'
Deze oefening maakt deel uit van de cursus
Functies voor het manipuleren van data in PostgreSQL
Oefeninstructies
- Zet
rental_durationom door het te vermenigvuldigen met eenINTERVALvan 1 dag - Trek de
rental_dateaf van dereturn_dateom het aantaldays_rentedte berekenen. - Sluit verhuringen uit met een
NULL-waarde voorreturn_date.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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;