暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【oushuDB】如何将多列聚合到一个新的列

原创 xiao_mini 2024-01-17
112

基本信息

系统 : CentOS Linux release 7.4.1708 (Core)
产品 : OushuDB
模块 : DB
子模块 : -

描述详述

根据一列分组将另一列聚合到一起形成一个新的字段,一般根据需要可以采用array_agg或string_agg

原因

xxx
xxx

解决方案

 name |      c       
------+--------------
 张三 | 红楼梦      
 张三 | 三国演义    
 张三 | 西游记      
 张三 | 西厢记      
 李四 | 凡人修仙录  
 李四 | 诛仙        
 李四 | 大唐双龙传  
 李四 | 诛仙        
(8 rows)

postgres=# select name,array_agg(distinct c) from aaa group by name;
 name |                           array_agg                           
------+---------------------------------------------------------------
 张三 | {"三国演义    ","红楼梦      ","西厢记      ","西游记      "}
 李四 | {"凡人修仙录  ","大唐双龙传  ","诛仙        "}
(2 rows)

postgres=# select name,array_agg( c order by name) from aaa group by name;
 name |                           array_agg                           
------+---------------------------------------------------------------
 张三 | {"西厢记      ","西游记      ","三国演义    ","红楼梦      "}
 李四 | {"诛仙        ","大唐双龙传  ","诛仙        ","凡人修仙录  "}
(2 rows)

postgres=# select name,array_agg(distinct c) from aaa group by name;
 name |                           array_agg                           
------+---------------------------------------------------------------
 张三 | {"三国演义    ","红楼梦      ","西厢记      ","西游记      "}
 李四 | {"凡人修仙录  ","大唐双龙传  ","诛仙        "}
(2 rows)

附件-完整sql文件

drop table if exists aaa;
CREATE TABLE aaa (
    name text,
    c text
)
WITH (appendonly=true, orientation=orc, compresstype=lz4) DISTRIBUTED RANDOMLY;


insert into aaa select '张三','红楼梦      ';
insert into aaa select '张三','三国演义    ';
insert into aaa select '张三','西游记      ';
insert into aaa select '张三','西厢记      ';
insert into aaa select '李四','凡人修仙录  ';
insert into aaa select '李四','诛仙        ';
insert into aaa select '李四','大唐双龙传  ';
insert into aaa select '李四','诛仙        ';
select name,array_agg(distinct c) from aaa group by name;
select name,array_agg( c order by name) from aaa group by name;
select name,array_agg(distinct c) from aaa group by name;
文章转载自xiao_mini,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论