2016-05-07 8 views
1

私はpostgresの中に次のSQLクエリを持っている:次のSQLクエリを取得して、グループ内の上位N件の結果を選択するにはどうすればよいですか?

SELECT * FROM tableName ORDER BY a,b,c 

私は、Bのグループのそれぞれの中に欲しい - 唯一のトップ10の結果、Bの順で、Cが選択されます。

私は、このような

SELECT * FROM tableName ORDER BY a,b,c LIMIT 10 

ようなものを試してみましたが、それは当然の権利ではない - それは世界的にトップ10の結果を返します。

a、b、cの順番で各グループ内で上位10個の結果を選択するにはどうすればよいですか?

答えて

3

あなたはrow_number()使用:

select t.* 
from (select t.*, 
      row_number() over (partition by a, b order by c) as seqnum 
     from tablename t 
    ) t 
where seqnum <= 10; 
関連する問題