gpt4 book ai didi

SQL 排名,同时保持时间排序

转载 作者:行者123 更新时间:2023-12-04 03:21:06 29 4
gpt4 key购买 nike

鉴于此数据

Type    Time    Outcome Wanted Result
1 8:00 1 1
1 9:00 1 1
1 10:00 1 1
0 11:00 2 2
0 12:00 2 2
0 13:00 2 2
1 14:00 1 3
1 15:00 1 3
0 16:00 2 4
1 17:00 1 5
0 18:00 2 6
1 19:00 1 7

第三列是我使用以下 sql 查询得到的当前结果:

SELECT Type, Time, DENSE_RANK() OVER (ORDER BY Type) as Outcome
FROM Tbl

我需要 dense_rank 来保持时间排序,同时按类型对数据进行排序。第 4 列是想要的结果。

我正在使用 SQL Server 2008

最佳答案

这很棘手。您可以使用不同的行号来执行此操作。这种方法一开始有点难以理解,所以我建议您运行子查询以了解发生了什么。当您查看结果时,您会很快“明白”:

select t.*,
dense_rank() over (order by mintime) as desired_column
from (select t.*,
min(time) over (partition by id, seqnum_t - seqnum_it) as mintime
from (select t.*,
row_number() over (order by time) as seqnum_t,
row_number() over (partition by id order by time) as seqnum_it
from tbl t
) t
) t;

关于SQL 排名,同时保持时间排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38449263/

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