RANK 在 SQL 但当数字大于时再次从 1 开始
RANK in SQL but start at 1 again when number is greater than
我需要下面的 sql 代码。我希望它排名,但是如果 DSLR >= 60 那么我希望排名重新开始,如下所示。
谢谢
假设您有一列定义了行的顺序,比如说 id
,您可以将其作为一个间隙和孤岛问题来解决。 Islands 是以 60
上方的 dslr
开头的一组相邻记录。我们可以用 window 总和来识别它们,然后在每个岛内排名:
select dslr, rank() over(partition by grp order by id) as rn
from (
select t.*,
sum(case when dslr >= 60 then 1 else 0 end) over(order by id) as grp
from mytable t
) t
我需要下面的 sql 代码。我希望它排名,但是如果 DSLR >= 60 那么我希望排名重新开始,如下所示。
谢谢
假设您有一列定义了行的顺序,比如说 id
,您可以将其作为一个间隙和孤岛问题来解决。 Islands 是以 60
上方的 dslr
开头的一组相邻记录。我们可以用 window 总和来识别它们,然后在每个岛内排名:
select dslr, rank() over(partition by grp order by id) as rn
from (
select t.*,
sum(case when dslr >= 60 then 1 else 0 end) over(order by id) as grp
from mytable t
) t