【问题标题】:Rank from a number until it gets to the same number SQL从一个数字排序直到它到达相同的数字 SQL
【发布时间】:2020-05-04 20:20:31
【问题描述】:

我有一个 SQL 问题,应该用 rank 或 row_number 解决(我认为),但我不知道如何。

我有一张显示应用用户行为的表格。用户可以在应用程序中单击菜单按钮,然后应用程序显示不同的产品(在菜单视图内)。因此,我表中的每一行都是用户在应用程序中执行的一次点击。

表格中有“菜单”列和“产品”列。如果用户单击菜单按钮,“菜单”列的值为 1。如果用户单击其他任何内容,则为 0。在菜单中,用户可以单击不同的产品,因此对于单击的每个产品,“产品”列'是 1。

所以,我想知道用户在菜单视图中点击了多少产品。我还有日期、平台(iOS 或 Android)、国家、用户 ID 和会话 ID。 30 分钟内发生的所有事情都在会话中,并且会话仅与一个用户相关。用户 ID 和会话 ID 都是唯一的。

表格是这样的:

此表显示用户 AAA 打开菜单然后单击了 2 个不同的产品,用户 BBB 在一个会话中打开菜单一次并且没有单击任何内容,然后再次打开并且没有单击任何内容。最后,用户 CCC 在第一个会话中点击了菜单并打开了 2 个产品,然后在另一个会话中他/她点击了菜单并打开了一个产品。

我想要这样的东西:

我尝试过使用 rank 和 row_number,我可以为产品的行获得相同的排名,但我无法让菜单行与产品行具有相同的排名。

希望你能帮帮我:(

【问题讨论】:

  • 不要放图片。尝试放置文本内容。

标签: sql rank row-number


【解决方案1】:

我想你想要dense_rank():

select dense_rank() over (order by user_id, date, session_id)

是否需要date 并不是 100% 清楚。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-20
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 2022-11-14
    • 2016-01-23
    • 1970-01-01
    相关资源
    最近更新 更多