许友彬PostgreSQL聚集函数绿宝石树
0.最近就是到处填坑
1.聚集函数也叫聚合函数
聚合操作之⾼效这⾥就不多谈了。
其特点在 窗⼝函数的⽂章中 做了些⽐较,所以…也不多谈了。
结合⽂档来说,聚集函数有⼀些巧思的,剩下的基本都是些较为专业的科学统计api,带过了。(有点“随笔”的感觉了…)
辣白菜炒饭怎么做2. ⼀些场景
having 中使⽤聚合函数作为过滤条件较where⼦句的逐⾏过滤来说,效率更优
grouping ts、cube、rollup ⽤作分组集(分组聚集),也就是将分组字段以组合的⽅式罗列出来
cube、rollop是grouping ts的两种分组⽅式的简洁写法(不知道咋说了,建议回归原⽂细看...)
脖子疼最快的缓解方法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 || 套⼀层"⽗查询"(并使⽤ca when is null)
pgsql的group by后不仅限于列名,亦⽀持表达式。⽐如:lect ... from ... where ... group by col < 10 ,col >= 10 and col <50,col >=50require
初三学生自我评价
根据表达式分组下,⽆法返回任意的原有列,除了使⽤聚合函数。-> 因此,我们可以使⽤order by 聚合函数来确定返回结果的排序