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