學電腦,學計算機 | 手機訪問 | 加入收藏 | 設為首頁 | RSS
當前位置:首頁 > 數據庫 > PostgreSQL > 正文

PostgreSQL 聚合函數講解 - 常用聚合函數

發布時間:2016-02-10 19:51:41  來源:電腦技術學習網
【摘要】: PostgreSQL支持較多的聚合函數, 以PostgreSQL 9.4為例, 支持例如一般性的聚合, 統計學科的聚合, 排序集聚合, 假象集聚合等.

PostgreSQL支持較多的聚合函數, 以PostgreSQL 9.4為例, 支持例如一般性的聚合, 統計學科的聚合, 排序集聚合, 假象集聚合等.

本文將對一般性聚合函數舉例說明其功能和用法.

聚合函數有哪些,見 : http://www.postgresql.org/docs/9.4/static/functions-aggregate.html

以上所有聚合函數, 當沒有行輸入時, 除了count返回0, 其他都返回null.

使用sum, array_agg時, 當沒有行輸入, 返回NULL可能有點別扭, 那么你可以使用coalesce來替代NULL, 如coalesce(sum(x), 0) coalesce(array_agg(x), '{}'::int[])

例子 : 聚合后得到數組, null將計入數組元素

postgres=# select array_agg(id) from (values(null),(1),(2)) as t(id);

 array_agg  

------------

 {NULL,1,2}

(1 row)

算平均值是不計算null

postgres=# select avg(id) from (values(null),(1),(2)) as t(id);

        avg         

--------------------

 1.5000000000000000

(1 row)

算bit與|或 時也不計算NULL

postgres=# select bit_and(id) from (values(null),(1),(2)) as t(id);

 bit_and 

---------

       0

(1 row)

postgres=# select bit_or(id) from (values(null),(1),(2)) as t(id);

 bit_or 

--------

      3

(1 row)

算布爾邏輯時也不計算NULL

postgres=# select bool_and(id) from (values(null),(true),(false)) as t(id);

 bool_and 

----------

 f

(1 row)

every是bool_and的別名, 實際上是SQL標準中定義的. 

postgres=# select every(id) from (values(null),(true),(false)) as t(id);

 every 

-------

 f

(1 row)

SQL標準中還定義了any和some為bool_or的別名, 但是因為any和some還可以被解釋為子查詢, 所以在PostgreSQL中any和some的布爾邏輯聚合不可用.

postgres=# select any(id) from (values(null),(true),(false)) as t(id);

ERROR:  syntax error at or near "any"

LINE 1: select any(id) from (values(null),(true),(false)) as t(id);

               ^

postgres=# select some(id) from (values(null),(true),(false)) as t(id);

ERROR:  syntax error at or near "some"

LINE 1: select some(id) from (values(null),(true),(false)) as t(id);

發表評論 共有條評論
驗證碼:
湖北省福彩30选5开奖