我如何分组连续每一行?

时间:2014-06-11 04:33:24

标签: sql postgresql group-by group-concat

我有这个查询

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行,尽可能多行。我怎么能做到这一点?

1 个答案:

答案 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;

演示:http://sqlfiddle.com/#!15/5c738/22