2016-05-03 9 views
0

Ich habe eine Tabelle mit 10 Spalten und ich interessiere mich für 3 davon. Sagen Sie TabelleA mit ID, Name, URL, Ranking.Max Wert für jede Gruppe in Unterabfrage

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 

Also, was ich will, ist, werden alle Spalten für Zeile mit der ID 5 und 6, die mit maximal Ranking für jede Gruppe (Apfel, Orange)

Antwort

1

Verwenden row_number Zeile wäre es, die Reihen nummerieren in jeder Namensgruppe nach ihrer Reihenfolge in absteigender Reihenfolge und wählen Sie die erste Zeile für jede Gruppe.

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

Vielen Dank. Das hat geholfen !! – Amy123