我有这个查询
SELECT 1 as row, array_agg(id) as ids FROM users GROUP BY row;
结果
row | ids
---------------
1 {1,2,3,4}
我有更多的结果无法放在一行...所以我正在尝试构建一个执行此操作的查询:
row | ids
---------------
1 {1,3,4,5}
2 {4,6,9,20}
3 {21,24,26,30}
etc.....
我想将id限制为每行50行,尽可能多行。我怎么能做到这一点?
答案 0 :(得分:4)
row_number() over()
返回行号。然后只需要一个子查询将它们组合在一起。将4
更改为您真正想要的数字
select a.r, array_agg(a.id) ids
from (
select (row_number() over()-1)/4 r, id
from users) a
group by a.r;