gpt4 book ai didi

postgresql - Postgres - 基于连续值的排名

转载 作者:行者123 更新时间:2023-11-29 11:46:50 24 4
gpt4 key购买 nike

如何创建一个在连续序列被破坏时从 1 重新开始的排名?

(点击下图)

下表表示用户的流程。他的整个旅程包括 8 个步骤,页面指示他在每个步骤中所在的页面。我想创建一个排名,在页面更改时重置。棘手的部分是让(第 6 步,第 1 页)中的排名重置为 1,而不是在 4 处继续。按页面分区是不够的,因为我希望在用户更改回第 1 页并继续时重新启动排名。该表包含我想要实现的结果,我只是不知道如何在 Postgres 中执行此操作。

Table Rank

最佳答案

您可以使用行号差异方法分配一个组,然后使用 row_number() 分配排名:

select step, page,
row_number() over (partition by page, seqnum - seqnum_p order by step) as ranking
from (select t.*,
row_number() over (order by step) as seqnum,
row_number() over (partition by page order by step) as seqnum_p
from t
) t;

要了解其工作原理,请查看子查询的结果。您将看到两个 seqnum 值之间的差异如何识别具有相同值的连续行。

关于postgresql - Postgres - 基于连续值的排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47654348/

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