子查询

时间:2016-05-03 16:20:06

标签: sql max amazon-redshift

我有一个包含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的行的所有列。这将是每组最大排名的行(苹果,橙色)

1 个答案:

答案 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