我需要为每个组取前N行,按自定义列排序 .
鉴于下表:
db=# SELECT * FROM xxx;
id | section_id | name
----+------------+------
1 | 1 | A
2 | 1 | B
3 | 1 | C
4 | 1 | D
5 | 2 | E
6 | 2 | F
7 | 3 | G
8 | 2 | H
(8 rows)
对于每个 section_id ,我需要前两行(由 name 排序),即类似于的结果:
id | section_id | name
----+------------+------
1 | 1 | A
2 | 1 | B
5 | 2 | E
6 | 2 | F
7 | 3 | G
(5 rows)
我正在使用PostgreSQL 8.3.5 .
5 回答
新解决方案(PostgreSQL 8.4)
从v9.3开始,你可以进行横向连接
它might be faster但是,当然,您应该专门针对您的数据和用例测试性能 .
这是另一个解决方案(PostgreSQL <= 8.3) .