gpt4 book ai didi

sql - 在 SQL 中,如果值不连续,是否有一种方法可以按值进行分区

转载 作者:行者123 更新时间:2023-11-29 14:32:02 25 4
gpt4 key购买 nike

我想对具有两列的分区的值进行排名。 col1 将是键,col2 将是一些值,该值也将在 ORDER BY 中使用。我只想在 col2 停止时才开始一个新分区。例如,我想执行以下操作:

+------+------+------+
| col1 | col2 | rank |
+------+------+------+
| a | 1 | 1 |
| a | 2 | 2 |
| a | 3 | 3 |
| a | 9 | 1 |
| a | 10 | 2 |
| b | 1 | 1 |
| b | 2 | 2 |
| b | 8 | 1 |
+------+------+------+

在某处思考SELECT col1, RANK() OVER (PARTITION BY col1, SOMETHING HERE??? ORDER BY col2 DESC)

有没有人有什么想法?

最佳答案

如果我没理解错的话,您想通过“孤岛”来枚举相邻的顺序值。您可以通过一个简单的观察来做到这一点:从 col2 中减去一个序列对于每个组都是不变的。所以,让我们使用这个观察:

select t.*,
row_number() over (partition by col1, grp order by col1) as rnk
from (select t.*,
(col2 - row_number() over (partition by col1 order by col2)) as grp
from t
) t

关于sql - 在 SQL 中,如果值不连续,是否有一种方法可以按值进行分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50398543/

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