【发布时间】:2021-03-24 06:39:54
【问题描述】:
我写了一个查询来获取这样的数据(附图),user_id 和 topic_id 被分组并计算分数的平均值。我想对每个用户的分数进行排名,因此每个用户的最高 topic_id 排名为 1。我们如何编写查询来对他们的分数进行排名,因为我需要为每个用户选择第一行。
表格是这样的 -
USER_ID TOPIC_ID SCORE
------------- ------------- ------
b33e3100a7be 829e4b89c318 85
b33e3100a7be b19b6f2b2975 82
b33e3100a7be e305c970701c 81.6
b33e3100a7be 6c6fac161e65 81.6
7379ce6bc5a9 6c6fac161e65 54.6
7379ce6bc5a9 e305c970701c 54.6
7379ce6bc5a9 b19b6f2b2975 51.6
并希望输出看起来像这样。
USER_ID TOPIC_ID SCORE RANK
------------- ------------- ------ -----
b33e3100a7be 829e4b89c318 85 1
b33e3100a7be b19b6f2b2975 82 2
b33e3100a7be e305c970701c 81.6 3
b33e3100a7be 6c6fac161e65 81.6 3
7379ce6bc5a9 6c6fac161e65 54.6 1
7379ce6bc5a9 e305c970701c 54.6 1
7379ce6bc5a9 b19b6f2b2975 54.6 2
【问题讨论】:
标签: sql postgresql subquery sql-order-by greatest-n-per-group