PostgreSQL 聚集函数

0.最近就是到处填坑

pgSQL 中文文档 聚集函数

1.聚集函数也叫聚合函数

聚合操作之高效这里就不多谈了。
其特点在 窗口函数的文章中 做了些比较,所以…也不多谈了。
结合文档来说,聚集函数有一些巧思的,剩下的基本都是些较为专业的科学统计api,带过了。(有点“随笔”的感觉了…)

2. 一些场景

having 中使用聚合函数作为过滤条件 较where子句的逐行过滤来说,效率更优

grouping sets、cube、rollup 用作分组集(分组聚集),也就是将分组字段以组合的方式罗列出来
	cube、rollop是grouping sets的两种分组方式的简洁写法(不知道咋说了,建议回归原文细看...)
		cube:给定分组的随机组合
		rollup:给定排序的分组的梯形分布
	groupping 和 传统的group不同的是,多分组下的表现形式不同:
		group是在上一次分组的各个组内进行下一轮分组
		grouping 的下一次分组使用的并不是前一次分组的结果,而是原来未分过组的原始表 -> 两次分组互不印象 -> 分组后的结果,给人一种“错开”显示的感觉

借助array_agg(exp)、jsonb_agg(exp)等api可将多行的列聚集成数组、json甚至是xml

count(distinct 列)可以实现分组内统计不重复值
count(1) 中的'1'表统计结果集中的第一列,这比count(*)效率更好
聚合函数不一样要使用group by,如果使用了group by需要保证值不能为N/A(不是null,相当于是查询空表的意思)=>这时候,考虑去掉group by || 套一层"父查询"(并使用case when is null)

pgsql的group by后不仅限于列名,亦支持表达式。比如:select ... from ... where ... group by col < 10 ,col >= 10 and col <50,col >=50 
	根据表达式分组下,无法返回任意的原有列,除了使用聚合函数。-> 因此,我们可以使用order by 聚合函数 来确定返回结果的排序
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肯尼思布赖恩埃德蒙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值