INTERVAL-Arithmetik
Wenn du tatsächlich einen DVD-Verleih hättest, müsstest du hin und wieder überprüfen, welche Filme gerade an Kunden verliehen sind. In der letzten Übung haben wir gesehen, dass einige Datensätze in den Ergebnissen einen Wert von NULL für return_date hatten. In diesen Fällen war die Ausleihe noch nicht abgeschlossen.
Jede Ausleihe in der Tabelle film hat eine zugehörige Spalte rental_duration, die angibt, wie viele Tage ein Kunde eine DVD ausleihen kann, bevor die Ausleihe als überfällig gilt. In diesem Beispiel schließt du Filme aus, die einen Wert NULL für return_date haben, und wandelst außerdem rental_duration in den Typ INTERVAL um. Nochmal zur Erinnerung, hier ist eine Methode zur Durchführung dieser Umwandlung.
SELECT INTERVAL '1' day * timestamp '2019-04-10 12:34:56'
Diese Übung ist Teil des Kurses
Funktionen zur Datenbearbeitung in PostgreSQL
Anleitung zur Übung
- Rechne
rental_durationum, indem du es mit einemINTERVALvon 1 Tag umwandelst. - Zieh das
rental_datevomreturn_dateab, um die Anzahl derdays_rentedzu berechnen. - Schließ Ausleihen mit einem Wert von
NULLinreturn_dateaus.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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;