INTERVAL-aritmetik
Om du drev en riktig DVD-uthyrningsbutik skulle det ibland vara nödvändigt att ta reda på vilka filmtitlar som för tillfället är uthyrda till kunder. I föregående övning såg vi att vissa poster i resultatet hade värdet NULL för return_date. Det beror på att uthyrningen fortfarande var aktiv.
Varje uthyrning i tabellen film har en tillhörande kolumn, rental_duration, som anger hur många dagar en DVD kan hyras av en kund innan det räknas som försenat. I den här övningen ska du utesluta filmer där return_date är NULL och konvertera rental_duration till typen INTERVAL. Här är en påminnelse om en metod för att utföra den här konverteringen.
SELECT INTERVAL '1' day * timestamp '2019-04-10 12:34:56'
Den här övningen är en del av kursen
Funktioner för datamanipulering i PostgreSQL
Övningsinstruktioner
- Konvertera
rental_durationgenom att multiplicera det med ettINTERVALpå 1 dag. - Subtrahera
rental_datefrånreturn_dateför att beräkna antaletdays_rented. - Uteslut uthyrningar där
return_datehar värdetNULL.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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;