相关疑难解决方法(0)

PostgreSQL中的分组限制:显示每组的前N行?

我需要为每个组取前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)
Run Code Online (Sandbox Code Playgroud)

我需要每个section_id的前两行(按名称排序),即类似于的结果:

 id | section_id | name
----+------------+------
  1 |          1 | A
  2 |          1 | B
  5 |          2 | …
Run Code Online (Sandbox Code Playgroud)

sql postgresql

157
推荐指数
4
解决办法
7万
查看次数

如何选择每组的前N行?

我有两个这样的SQLite表:

 AuthorId | AuthorName
----------------------
 1        | Alice
 2        | Bob
 3        | Carol
 ...      | ....


 BookId | AuthorId | Title
----------------------------------
 1      | 1        | aaa1
 2      | 1        | aaa2
 3      | 1        | aaa3
 4      | 2        | ddd1
 5      | 2        | ddd2
 ...    | ...      | ...
 19     | 3        | fff1
 20     | 3        | fff2
 21     | 3        | fff3
 22     | 3        | fff4
Run Code Online (Sandbox Code Playgroud)

我想创建一个SELECT查询,它将返回每个AuthorId的前N行(例如两行),按Title排序("选择每个作者的前两本书").

样本输出:

 BookId |  AuthorId | AuthorName …
Run Code Online (Sandbox Code Playgroud)

sql sqlite greatest-n-per-group limit-per-group

23
推荐指数
2
解决办法
2万
查看次数