ПочатиПочніть безкоштовно

Арифметика з INTERVAL

Якби ви керували реальною крамницею з прокату DVD, час від часу потрібно було б визначати, які назви фільмів зараз орендовані клієнтами. У попередній вправі ми бачили, що деякі записи в результатах мали значення NULL у полі return_date. Це означає, що прокат ще не закрито.

Кожен запис про прокат у таблиці film має пов'язаний стовпець rental_duration, який означає кількість днів, протягом яких клієнт може орендувати DVD, перш ніж прокат вважатиметься простроченим. У цьому прикладі ви виключите фільми, у яких return_date має значення NULL, а також перетворите rental_duration на тип INTERVAL. Ось нагадування про один зі способів виконати таке перетворення.

SELECT INTERVAL '1' day * timestamp '2019-04-10 12:34:56'

Ця вправа є частиною курсу

Функції для обробки даних у PostgreSQL

Переглянути курс

Інструкції до вправи

  • Перетворіть rental_duration, помноживши його на INTERVAL тривалістю 1 день.
  • Відніміть rental_date від return_date, щоб обчислити кількість days_rented.
  • Виключіть прокати, де return_date має значення NULL.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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;
Редагувати та запускати код