INTERVAL aritmética
Se você estivesse administrando uma loja de aluguel de DVDs de verdade, às vezes precisaria saber quais filmes estavam disponíveis para aluguel pelos clientes. No exercício anterior, vimos que alguns dos registros nos resultados tinham um valor NULL para o return_date. Isso porque o aluguel ainda estava pendente.
Cada aluguel na tabela film tem uma coluna rental_duration associada, que mostra quantos dias um DVD pode ser alugado por um cliente antes de ser considerado atrasado. Neste exemplo, você vai excluir filmes que têm um valor NULL para o return_date e também converter o rental_duration para um tipo INTERVAL. Aqui vai um lembrete de um jeito de fazer essa conversão.
SELECT INTERVAL '1' day * timestamp '2019-04-10 12:34:56'
Este exercício faz parte do curso
Funções para mexer nos dados no PostgreSQL
Instruções do exercício
- Converta
rental_durationmultiplicando-o por 1 dia.INTERVAL - Tira o
rental_datedoreturn_datepra calcular o número dedays_rented. - Excluir aluguéis com um valor de
NULLparareturn_date.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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;