drop table if exists tree_test;
CREATE TABLE tree_test
(
id character varying(3),
pid character varying(3),
name character varying(50)
);

truncate table tree_test;
INSERT INTO tree_test(id,pid,name) values('001','0','深圳市');
INSERT INTO tree_test(id,pid,name)  values('002','001','南山区');
INSERT INTO tree_test(id,pid,name)  values('003','001','龙华区');
INSERT INTO tree_test(id,pid,name)  values('004','001','宝安区');
INSERT INTO tree_test(id,pid,name)  values('005','002','粤海街道');
INSERT INTO tree_test(id,pid,name)  values('006','002','前海街道');
INSERT INTO tree_test(id,pid,name)  values('007','002','深圳湾');

select * from tree_test ;

拼接concat_ws,没有分隔符
select concat_ws(id,pid,name) as con from tree_test

拼接concat_ws,用/分隔
select concat_ws('/',id,pid,name) as con from tree_test;

拼接concat_ws,用/分隔
select pid,group_concat(name) as con from tree_test group by pid;

用array_to_string组合
SELECT * ,array_to_string(array(SELECT att.name FROM tree_test att),'/') FROM tree_test;
 id  | pid |  name  |                 array_to_string
-----+-----+--------+--------------------------------------------------
 001 | 0   | 厦门市 | 未来海/青春海/厦门市/集美区/同安区/海沧区/区政府
 003 | 001 | 集美区 | 未来海/青春海/厦门市/集美区/同安区/海沧区/区政府
 007 | 002 | 未来海 | 未来海/青春海/厦门市/集美区/同安区/海沧区/区政府
 002 | 001 | 海沧区 | 海沧区/区政府/未来海/同安区/青春海/厦门市/集美区
 005 | 002 | 区政府 | 海沧区/区政府/未来海/同安区/青春海/厦门市/集美区
 004 | 001 | 同安区 | 未来海/青春海/同安区/厦门市/集美区/海沧区/区政府
 006 | 002 | 青春海 | 青春海/厦门市/集美区/同安区/未来海/海沧区/区政府

把查询结果输出为数组
select array(SELECT att.name FROM tree_test att) from dual;
 array
{厦门市,集美区,未来海,海沧区,区政府,同安区,青春海}

同一层级进行合并
select pid, string_agg(name, ',') from tree_test group by pid;
pid |        string_agg
-----+--------------------------
 001 | 南山区,龙华区,宝安区
 002 | 深圳湾,前海街道,粤海街道
 0   | 深圳市
 或者:
 select pid, array_to_string(array_agg(name),',') from tree_test group by pid;
  pid |     array_to_string
-----+--------------------------
 002 | 深圳湾,前海街道,粤海街道
 001 | 南山区,龙华区,宝安区
 0   | 深圳市
 
 同一层级进行合并,并且按name排序
 select pid, string_agg(name, ',' order by name desc) from tree_test group by pid;
pid |        string_agg
-----+--------------------------
 002 | 粤海街道,深圳湾,前海街道
 001 | 龙华区,宝安区,南山区
 0   | 深圳市

[postgresql]postgresql的聚合函数sql实例相关推荐

  1. 《卸甲笔记》-PostgreSQL和Oracle的SQL差异分析之三:rownum和聚合函数

    PostgreSQL是世界上功能最强大的开源数据库,在国内得到了越来越多机构和开发者的青睐和应用.随着PostgreSQL的应用越来越广泛,Oracle向PostgreSQL数据库的数据迁移需求也越来 ...

  2. sql中聚合函数和分组函数_学习SQL:聚合函数

    sql中聚合函数和分组函数 SQL has many cool features and aggregate functions are definitely one of these feature ...

  3. 数据库-聚合函数-count-sum

    SQL中的聚合函数 SQL语言中定义了部分的函数,可以帮助我们完成对查询结果的计算操作:  1.count 统计个数(行数)  2.sum函数:求和 3.avg函数:求平均值 4.max.min 求最 ...

  4. SqlService基础一篇搞定(建库建表、插入数据、修改和删除数据、基础查询、条件查询、模糊查询、聚合函数、分组查询、多表查询)

    SqlService基础知识总汇 前言 一.SQLSERVER建库建表 1.检查数据库名是否存在 2.创建数据库 3.建表 4.修改表结构 5.删除添加约束 二.SQLSERVER插入数据 1.向部门 ...

  5. 【MySQL】聚合函数详解

    聚合函数 SQL 函数还有一类,叫做聚合(或聚集.分组)函数,它是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值. 1.聚合函数介绍 什么是聚合函数: 聚合函数作用于一组数据,并对一 ...

  6. 【PostGreSql】SQL中只要用到聚合函数就一定要用到group by 吗?

    一,问题: select aa.apply_time, aa.product_cid, count(case when aa.r_state='审核中' then apply_id end )审核中订 ...

  7. PostgreSQL 10 自定义并行计算聚合函数的原理与实践

    标签 PostgreSQL , 聚合函数 , 自定义 , AGGREGATE , 并行 , COMBINEFUNC 背景 PostgreSQL 9.6开始就支持并行计算了,意味着聚合.扫描.排序.JO ...

  8. postgresql报错:必须出现在 GROUP BY 子句中或者在聚合函数中使用

    报错信息:Cause: org.postgresql.util.PSQLException: 错误: 字段 "s.re_scan_dt" 必须出现在 GROUP BY 子句中或者在 ...

  9. PostgreSQL Oracle 兼容性之 - PL/SQL DETERMINISTIC 与PG函数稳定性(immutable, stable, volatile)...

    标签 PostgreSQL , Oracle , 函数稳定性 , stable , immutable , volatile , DETERMINISTIC 背景 Oracle创建pl/sql函数时, ...

最新文章

  1. 西门子标准报文1常用_关于西门子变频器报文的个人解读
  2. 全球人工智能战略与政策观察(2019)
  3. java pathinfo,nginx下支持PATH_INFO的方法实例详解
  4. 小波变换 完美通俗讲解 之 二
  5. Android 系统(41)---善用工具
  6. linux下proc文件的读写(部分转载)
  7. 推箱子视频教学Java,推箱子游戏教学视频
  8. 一致性检验Kappa 与 混淆矩阵
  9. 飞秋等级授权码_观点 | 谈谈网络安全等级保护与密码法
  10. 瑞禧靶向光热染料ICG偶联-吲哚菁绿标记Labeled泛素/黑接骨木凝集素SNA / EBL
  11. 如何将视频轻松转换为 GIF
  12. logx求x怎么用计算机,logx(logx等于什么)
  13. 手机端点击图片全屏预览
  14. PTA甲 1069~1072题解
  15. Python:素数求和
  16. LC滤波器的截止频率公式
  17. NVIC中断优先级管理
  18. 东大22春电子政务X《电子政务》在线平时作业3参考非答案
  19. at指令 meid_MTK平台手机写IMEI的方法
  20. CMAKE编译时如何自动下载第三方库并解压、安装到指定目录

热门文章

  1. 一对一关联查询注解@OneToOne的实例详解
  2. 时钟分频中的计数值问题
  3. [转载] 百科全说——王晓斋:感冒时您找准医生了吗?(10-10-11)
  4. JAVA学习day06
  5. 移植busybox构建最小根文件系统
  6. 我的失败与伟大 —— 产品原型的打造
  7. 如何用c语言调用c++做成的动态链接库
  8. 什么是平板电脑的杀手锏?
  9. sqlplus 编辑的小技巧
  10. ubuntu系统颜色更改