2016-01-16 66 views
0

我有表所示:Postgres的選擇(由類型組)

ID  NAME  TYPE RATING 
1  name1  1  98 
2  name2  1  17 
3  name3  2  77 
4  name4  2  53 
5  name5  2  23 
6  name6  4  64 
7  name7  3  78 
8  name8  3  56 
9  name9  3  22 
10  name10  4  56 
11  name11  4  99 
.  ...  .  .. 

如何從該表中選擇,並且例如僅(2,3 ...等,N)的每個「類型的行'最高評價? (2行)

結果例如:

ID  NAME  TYPE RATING 
1  name1  1  98 
2  name2  1  17 
3  name3  2  77 
4  name4  2  53 
7  name7  3  78 
8  name8  3  56 
6  name6  4  64 
11  name11  4  99 
.  ...  .  .. 

回答

3

您可以使用row_number窗函數分配排名給每行,每類型:

SELECT id, name, type, rating 
FROM (SELECT id, name, type, rating, 
       ROW_NUMBER() OVER (PARTITION BY type ORDER BY rating DESC) AS rn 
     FROM myable) 
WHERE rn <= 3; -- Or any other number of rows per type you wish 
+0

有什麼關係? – lad2025

+0

謝謝,工作正常 – user2870934