如何使用 window 函数 select sql 中的第三、第四、第五个日期
how to select third, fourth, fifth date in sql using window function
电影的table租借有这个数据:
rental_id rental_ts inventory_id customer_id return_ts
11909 2/14/2020 871 474 3/15/2020
12222 2/14/2020 3949 22 4/18/2020
如何生成对:
第一个rental_ts,第二个租赁日期,
第二次租赁,第三次租赁日期,
....
第二个 LAST 租赁日期,最后一个租赁日期,
上次租赁日期,null?
使用 window 函数 - 这不起作用:
select
customer_id,
rental_ts as first_rental_date ,
lead(rental_ts) over(partition by customer_id order by rental_ts) as second_rental_date,
lead(lead(rental_ts) over(partition by customer_id order by rental_ts)) as third_rental_date
from rental
我预计:
customer_id , rental_date, second_rental_date, third_rental_date ... second_last_rental_date, last_rental_date
1 2/14/2020 1/14/2020 12/13/2019 12/13/2019
2 5/16/2020 5/13/2020 5/07/2020 4/29/2020
基本上我需要超过 1 级后退 - 但不知道如何使用它,我在工作中只使用 1 lead() 或 lag() 来比较当前和以前的日期
不需要使用动态数据透视表吗?但是如果你想要这样,那么你可以使用 lead(rental_ts,2), lead(rental_ts,3) 等...
select
customer_id,
rental_ts as first_rental_date ,
lead(rental_ts) over(partition by customer_id order by rental_ts) as second_rental_date,
lead(rental_ts,2) over(partition by customer_id order by rental_ts) as third_rental_date
from rental
电影的table租借有这个数据:
rental_id rental_ts inventory_id customer_id return_ts
11909 2/14/2020 871 474 3/15/2020
12222 2/14/2020 3949 22 4/18/2020
如何生成对:
第一个rental_ts,第二个租赁日期,
第二次租赁,第三次租赁日期, ....
第二个 LAST 租赁日期,最后一个租赁日期,
上次租赁日期,null?
使用 window 函数 - 这不起作用:
select
customer_id,
rental_ts as first_rental_date ,
lead(rental_ts) over(partition by customer_id order by rental_ts) as second_rental_date,
lead(lead(rental_ts) over(partition by customer_id order by rental_ts)) as third_rental_date
from rental
我预计:
customer_id , rental_date, second_rental_date, third_rental_date ... second_last_rental_date, last_rental_date
1 2/14/2020 1/14/2020 12/13/2019 12/13/2019
2 5/16/2020 5/13/2020 5/07/2020 4/29/2020
基本上我需要超过 1 级后退 - 但不知道如何使用它,我在工作中只使用 1 lead() 或 lag() 来比较当前和以前的日期
不需要使用动态数据透视表吗?但是如果你想要这样,那么你可以使用 lead(rental_ts,2), lead(rental_ts,3) 等...
select
customer_id,
rental_ts as first_rental_date ,
lead(rental_ts) over(partition by customer_id order by rental_ts) as second_rental_date,
lead(rental_ts,2) over(partition by customer_id order by rental_ts) as third_rental_date
from rental