繁体   English   中英

SQL - 按 id 分组的日期之间的天数

[英]SQL - number of days between dates grouped by id

我有这个数据,其中每一行代表一个客户的交易:

Date       Client
2022-01-30 A
2022-01-16 A
2022-01-15 A
2022-03-15 B
2022-02-15 B
2022-03-02 C

我正在寻找Number of days ,它是自该客户上次交易以来的天数。

Date       Client Number of days
2022-01-30 A      14
2022-01-16 A      1
2022-01-15 A      NULL
2022-03-15 B      30
2022-02-15 B      NULL
2022-03-02 C      NULL

我试过这样的事情:

ROW_NUMBER() OVER (PARTITION BY Client ORDER BY Date DESC) AS Number_of_days

但是我被困在ROW_NUMBER()因为我不能在每个日期 select 并计算差异。

有什么建议么?

你可以尝试使用LEAD window function

SELECT *,
       DATE_DIFF(Date , LEAD(Date) OVER(PARTITION BY Client ORDER BY Date DESC),DAY) 
FROM T

使用滞后()

select Client,d,
DATE_DIFF(d,lag(d)over(partition by Client order by d desc),DAY) as dys from table_name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM