首页 > 解决方案 > Bigquery:排名函数

问题描述

我正在尝试在 bigquery 中生成以下排名。我能够生成 rank1 但无法在 rank_2 中获得预期值。

有人可以帮忙吗?

代码:

dense_rank() over (partition by user_id order by product_id,timestamp_added desc) as rank1,

数据:

product_id | user_id | rank1 | rank_2 | Timestamp    
100        | 10      | 1     |  1     | 2021-05-03 14:10:10    
100        | 10      | 1     |  2     | 2021-05-03 14:10:10    
200        | 10      | 2     |  1     | 2021-02-03 8:12:56

标签: sqlgoogle-bigqueryrank

解决方案


dense_rank(and rank) 将为具有相等值的行返回相等的值(等级)。如果您想(任意)为他们分配不同的等级,您可以使用row_number

row_number() over (partition by user_id order by product_id,timestamp_added desc) as rank2

推荐阅读