sql - 我如何分组连接每一行?

标签 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 个,行数越多越好。我怎样才能做到这一点?

最佳答案

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

关于sql - 我如何分组连接每一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24154714/

相关文章:

mysql - 使用 MYSQL 对相似的字符串进行分组以收集

mysql - 子查询的 group by 计数与 group by 列上的不同计数之间的差异

python - 从字典中保存关系 sqlalchemy 对象

mysql - 如何在mysql中合并具有相同值的行

javascript - 在 Javascript 中按函数优化分组

mysql - 如何在预定时间后执行MySQL中的任务

java - 是否可以在insert sql语句中插入算术运算?

python - PL/Python 与 Anaconda

python - 通过 SQLAlchemy 在 postgres 中存储序列化数据

mysql - 按小时或按天对记录进行分组,并在 mysql 中用零或空值填充空白