gpt4 book ai didi

SQL 分区按日期范围

转载 作者:行者123 更新时间:2023-12-03 14:10:46 25 4
gpt4 key购买 nike

假设这是我的表:

ID  NUMBER  DATE
------------------------
1 45 2018-01-01
2 45 2018-01-02
2 45 2018-01-27

我需要使用 partition by 和 row_number 分开,其中一个日期和另一个日期之间的差异大于 5 天。上面例子的结果是这样的:
ROWNUMBER   ID  NUMBER  DATE
-----------------------------
1 1 45 2018-01-01
2 2 45 2018-01-02
1 3 45 2018-01-27

我的实际查询是这样的:
SELECT ROW_NUMBER() OVER(PARTITION BY NUMBER ODER BY ID DESC) AS ROWNUMBER, ...
但正如您所注意到的,它不适用于日期。我怎样才能做到这一点?

最佳答案

您可以使用 lag功能 :

select *, row_number() over (partition by number, grp order by id) as [ROWNUMBER]
from (select *, (case when datediff(day, lag(date,1,date) over (partition by number order by id), date) <= 1
then 1 else 2
end) as grp
from table
) t;

关于SQL 分区按日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51593992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com