sql - 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
解决方案
dense_rank
(and rank
) 将为具有相等值的行返回相等的值(等级)。如果您想(任意)为他们分配不同的等级,您可以使用row_number
:
row_number() over (partition by user_id order by product_id,timestamp_added desc) as rank2
推荐阅读
- php - 用户在 Laravel 中使用 Redis 加入广播频道后,在后端获取事件
- github - 如何在 github repo 代码中搜索带前导 & 符号的字符串
- c# - 如何使用 C# 将 xml 文件合并到一个具有两个特定节点的文件中
- flutter - 带有键盘的 Flutter TextFieldForm 导致重建
- java - 在 ASCIIFoldingFilter 中使用静态“foldToAscii”方法
- kubernetes - 在本地 kubernetes 集群上遇到问题 - ProvisioningFailed - 没有匹配的卷插件
- azure-application-insights - 使用 Serilog 的 Application Insights 的应用程序图不起作用
- kotlin - 如何在 Java / Kotlin 中的 StatusException 之后从 grpc Status.details 字段获取数据?
- azure-active-directory - 由 servicebus 触发的 Azure Functions 抱怨连接字符串“AzureWebJobsServiceBus”丢失或为空
- javascript - 为什么这个 React/Redux 代码使用看似未定义的变量进行类型检查?