postgresql , 聚合 , filter , order , within group
postgresql的分析功能还是比较强大的,例如支持多维分析,支持4大类聚合,支持窗口查询,支持递归查询等。
4大类聚合的用法请参考
<a href="https://github.com/digoal/blog/blob/master/201503/20150302_01.md">《postgresql aggregate function 1 : general-purpose aggregate functions》</a>
<a href="https://github.com/digoal/blog/blob/master/201503/20150303_03.md">《postgresql aggregate function 2 : aggregate functions for statistics》</a>
<a href="https://github.com/digoal/blog/blob/master/201504/20150407_01.md">《postgresql aggregate function 3 : aggregate functions for ordered-set》</a>
<a href="https://github.com/digoal/blog/blob/master/201504/20150407_02.md">《postgresql aggregate function 4 : hypothetical-set aggregate functions》</a>
多维分析请参考
<a href="https://github.com/digoal/blog/blob/master/201212/20121218_03.md">《greenplum 最佳实践 - 多维分析的使用(cube, rollup, grouping sets in greenplum and oracle)》</a>
<a href="https://github.com/digoal/blog/blob/master/201505/20150526_02.md">《postgresql 9.5 new feature - support grouping sets, cube and rollup.》</a>
窗口查询请参考
<a href="https://github.com/digoal/blog/blob/master/201611/20161128_01.md">《时序数据合并场景加速分析和实现 - 复合索引,窗口分组查询加速,变态递归加速》</a>
<a href="https://github.com/digoal/blog/blob/master/201704/20170411_04.md">《快速入门postgresql应用开发与管理 - 4 高级sql用法》</a>
递归查询请参考
<a href="https://github.com/digoal/blog/blob/master/201704/20170411_03.md">《快速入门postgresql应用开发与管理 - 3 访问数据》</a>
本文主要介绍一下聚合表达式的高级用法
1. 我们在分组后,需要查出分组中复合条件的count,以及分组的count。
2. 我们需要按顺序,将多条记录,聚合为一个字符串或数组,同样也可以加filter,只聚合复合条件的记录
3. 我们需要去每个分组,某个字段中值
4. 去过滤条件后的中值
postgresql 的分析方法很全面,建议用户可以多了解一下我在开始时给出的链接,帮助提高生产力。
<a href="https://www.postgresql.org/docs/9.6/static/sql-expressions.html#syntax-aggregates">https://www.postgresql.org/docs/9.6/static/sql-expressions.html#syntax-aggregates</a>