我有一个包含10列的表,我对其中的3个感兴趣。 说tableA有id,name,url,ranking。
id |name |url |ranking
--------------------------------
1 |apple |a1.com |1
2 |apple |a1.com |2
3 |apple |a1.com |3
4 |orange |o1.com |1
5 |orange |o1.com |2
6 |apple |a1.com |4
所以,我想要的是,id为5和6的行的所有列。这将是每组最大排名的行(苹果,橙色)
答案 0 :(得分:1)
使用row_number
按降序排列每个名称组中的行数,然后选择每个组的第一行。
select id,name,url,ranking
from
(select t.*, row_number() over(partition by name order by ranking desc) as rn
from tablename t) t
where rn =1