从 group by 子句中获取一对记录
P粉195402292
P粉195402292 2024-02-04 00:15:13
[PHP讨论组]

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

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).

帮我解决这个问题。

P粉195402292
P粉195402292

全部回复(1)
P粉564192131

如果您想在数据库中执行此操作,可以使用 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中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号