天天看点

PostgreSQL 聚合表达式 FILTER , order , within group 用法

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>

继续阅读