INTERVAL の演算
実際の DVD レンタル店を運営している場合、現在顧客に貸し出し中の作品タイトルを確認する必要が出てくることがあります。前の演習では、結果の一部のレコードで NULL が return_date値 になっていることを確認しました。これは、そのレンタル品がまだ返却されていないことを意味します。
film テーブルの各レンタル品には rental_duration 列があり、これは顧客が DVD を延滞扱いになるまでに借りられる日数を表しています。この演習では、NULL が return_date のレコードを除外したうえで、rental_duration を INTERVAL 型に変換します。この変換を行う方法の一例を以下に示します。
SELECT INTERVAL '1' day * timestamp '2019-04-10 12:34:56'
この演習はコースの一部です
PostgreSQL のデータ操作関数
演習の手順
rental_durationに 1 日分のINTERVALを掛けて変換します。rental_dateからreturn_dateを引いて、days_rentedを計算します。NULLがreturn_dateのレンタルを除外します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
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;