2016-05-03 10 views
0

私は10列のテーブルを持っており、そのうち3つに興味があります。 id、name、url、rankingを持つtableAと言ってください。サブクエリ内の各グループの最大値

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

使用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 
+0

ありがとうございます。それは助けになった! – Amy123

関連する問題