我正在与萨基拉视频租赁数据库来预装mysql的工作。
我试图找到平均天数每个视频坐在货架上,然后再租。
在 rentals
你有table吗 rental_id
对于每笔租赁交易 inventory_id
与所租物品以及 rental_date
以及 return_date
.
对于每笔租赁交易,我想看看 rental_date
从中找出区别 return_date
以前发生的相同事件 inventory_id
.
我知道 LAG()
以及 LEAD()
在这里可能有用,但是我不知道如何使它只考虑其他具有相同属性的行 inventory_id
.
样本数据:
rental_id inventory_id rental_date return_date
-------------------------------------------------------
1 115 01-01-2005 01-05-2005
2 209 01-01-2005 01-04-2005
3 115 01-06-2005 01-10-2005
4 209 01-09-2005 01-14-2005
5 209 01-15-2005 01-20-2005
6 115 01-16-2005 01-20-2005
期望输出:
rental_id inventory_id rental_date return_date days_on_shelf
------------------------------------------------------------------------
1 115 01-01-2005 01-05-2005 NULL
2 209 01-01-2005 01-04-2005 NULL
3 115 01-06-2005 01-10-2005 1
4 209 01-09-2005 01-14-2005 5
5 209 01-15-2005 01-20-2005 1
6 115 01-16-2005 01-20-2005 6
感谢6月7日。正确的代码应如下所示:
SELECT
rental.rental_id,
rental.inventory_id,
inventory.film_id,
rental.rental_date,
rental.return_date,
IF(@lastid = rental.inventory_id,
DATEDIFF(rental.rental_date, @lastreturn),
NULL) AS days_on_shelf,
@lastid:=rental.inventory_id,
@lastreturn:=rental.return_date
FROM
rental
JOIN
inventory ON rental.inventory_id = inventory.inventory_id
ORDER BY rental.inventory_id , rental.rental_date
1条答案
按热度按时间a2mppw5e1#
你好像只是想
lag()
: