如何在同一分数中获取唯一 id 的数据



表中的记录如下:

user           score             label
----------------------------------------------
userA            2               apple
userA            2               banana
userB            5               cat
userB            5               dog

对于不同的行,如果用户和分数相同,只需要获得唯一的用户和分数,任何标签都可以。

上面的预期查询结果是一个例子,可以是下面的任何一个:

user           score             label
----------------------------------------------
userA            2               apple
userB            5               cat

user           score             label
----------------------------------------------
userA            2               banana
userB            5               cat

user           score             label
----------------------------------------------
userA            2               apple
userB            5               dog

user           score             label
----------------------------------------------
userA            2               banana
userB            5               dog

如果任何标签都很好,我认为最简单的方法是使用聚合函数,如min或max——

SELECT user, score, max(label) as label
FROM table
GROUP BY user, score

您可以使用窗口函数:

select * from 
( 
select * , row_number() over (partition by user,score order by label) rn
from tablename
) t
where t.rn = 1;

最新更新