php - 从 group by 子句中获取一对记录

标签 php sql postgresql

我从该表中有一些表,我使用该表获取记录

string_agg(a2.sampl_no, ', ') as sampl_nos 

和 group by 子句可以正常工作,但我想让每一行最多有 4 个sample_no 聚合。

假设我从数据库中得到

string_agg as (0001, 0002, 0003, 0004, 0005, 0006) 

在一排,但我想要这个

(0001, 0002, 0003, 0004) (0006, 0007).

帮我解决这个问题。

最佳答案

如果您想在数据库中执行此操作,可以使用 row_number() 将记录分成四组,然后使用 string_agg():

select * from rec_agg;
┌───────────┐
│ sample_no │
├───────────┤
│ 0001      │
│ 0002      │
│ 0003      │
│ 0004      │
│ 0005      │
│ 0006      │
│ 0007      │
│ 0008      │
│ 0009      │
│ 0010      │
│ 0011      │
└───────────┘
(11 rows)


with mk_grp as (
  select *, ((row_number() over (order by sample_no)) - 1) / 4 as grp 
    from rec_agg
) 
select string_agg(sample_no, ' ,') 
  from mk_grp 
 group by grp ;
┌────────────────────────┐
│       string_agg       │
├────────────────────────┤
│ 0001 ,0002 ,0003 ,0004 │
│ 0009 ,0010 ,0011       │
│ 0005 ,0006 ,0007 ,0008 │
└────────────────────────┘
(3 rows)

关于php - 从 group by 子句中获取一对记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72377173/

相关文章:

sql - “动态”SQL 连接可能吗?

c# - 连接到 Always On 可用性组的只读实例

postgresql - Flask Postgres 与 Kubernetes 和 Docker 的连接失败

postgresql - 文本列的唯一索引 - 什么是索引类型?

php - INSERT INTO 数据库不起作用

php - 需要有关标签的建议

PHP 深度扩展数组

php - 如何在 laravel 中检测 JFIF 图像类型

sql - 为什么 ms-access sql 传递在 VBA 中不起作用

postgresql - 如何在 json 数组上 postgresql Sequelize 查询