PostgreSQL中的分组LIMIT:显示每个组的前N行?
发布时间:2020-12-13 16:54:02 所属栏目:百科 来源:网络整理
导读:我需要为每个组的前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的前2行
我需要为每个组的前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的前2行(按名称排序),即类似的结果: 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。
新解决方案(PostgreSQL 8.4)
SELECT * FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY section_id ORDER BY name) AS r,t.* FROM xxx t) x WHERE x.r <= 2; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |