聚合函数是从一组输入中计算出一个结果的函数。

测试表

test=# \d tbl_test
Table "public.tbl_test"
Column | Type | Modifiers
--------+-----------------------+-----------
id | integer |
name | character varying(32) |
sex | character varying(1) | test=# select * from tbl_test;
id | name | sex
----+------+-----
1 | 张三 | m
2 | 李四 | m
3 | 王五 | f
(3 rows)

通用聚合函数

函数 参数类型 返回类型 描述 示例 结果
array_agg(expression) 任意非数组类型 参数类型的数组 将入参包括NULL连接成一个数组 select array_agg(id) from tbl_test; {1,2,3}
array_agg(expression) 任意数组类型 入参数据类型

将入参数组连接成更高维度的数组,输入的数组必须是相同的维度,且不允许是空或NULL

select array_agg(array['b','c','a']);  {{b,c,a}}
avg(expression) smallint, int, bigint, real, double precision, numeric, or interval 整形返回numeric,浮点型返回double precision,其他和入参类型相同 平均值 select avg(id) from tbl_test; 2.0000000000000000
bit_and(expression) smallintintbigint, or bit 和入参类型相同 所有非NULL输入值的按位与,如果全为NULL则返回NULL select bit_and(id) from tbl_test; 0
bit_or(expression) smallintintbigint, or bit 和入参类型相同 所有非NULL输入值的按位或,如果全为NULL则返回NULL select bit_or(id) from tbl_test; 3
bool_and(expression) bool bool 如果输入全是true则返回true,否则为false select bool_or(id::bool) from tbl_test; t
bool_or(expression) bool bool 如果输入至少一个true,则返回true,否则返回false select bool_or((id-1)::bool) from tbl_test; t
count(*)   bigint 输入行数 select count(*) from tbl_test; 3
count(expression) any bigint 输入行中非NULL的行数 select count(id) from tbl_test; 3
every(expression) bool bool 功能同bool_and    
json_agg(expression) any json 将输入聚合成一个json数组 select json_agg(id) from tbl_test; [1, 2, 3]
jsonb_agg(expression) any jsonb 将输入聚合成一个json数组 select jsonb_agg(id) from tbl_test; [1, 2, 3]
json_object_agg(name,value) (any, any) json 将输入组成一个key/value对的json对象 select json_object_agg('a','one'); { "a" : "one" }
jsonb_object_agg(name,value) (any, any) jsonb 将输入组成一个key/value对的json对象 select jsonb_object_agg('a','one'); {"a": "one"}
max(expression)     输入最大值

select max(id) from tbl_test;

3
min(expression)     输入最小值 select min(id) from tbl_test; 1
string_agg(expression,delimiter) (texttext) or (byteabytea) 同参数类型 将输入使用delimiter连接成一个text select string_agg(name,',') from tbl_test;  张三,李四,王五
sum(expression) smallintintbigintrealdouble precisionnumericinterval, or money   输入和 select sum(id) from tbl_test; 6
xmlagg(expression) xml xml   请参考xml类型及其函数  

修改表

test=# alter table tbl_test add column id1 int default 1;
ALTER TABLE
test=# select * from tbl_test;
id | name | sex | id1
----+------+-----+-----
1 | 张三 | m | 1
2 | 李四 | m | 1
3 | 王五 | f | 1
(3 rows)

统计聚合函数

函数 参数类型 返回类型 描述 示例 结果
corr(YX) double precision double precision 相关系数 select corr(id,id) from tbl_test; 1
covar_pop(YX) double precision double precision 总体协方差 select covar_pop(id,id) from tbl_test; 0.666666666666667
covar_samp(YX) double precision double precision 样本协方差 select covar_samp(id,id1) from tbl_test; 0
regr_avgx(YX) double precision double precision 自变量平均值(sum(X)/N) select regr_avgx(id,id1) from tbl_test; 1
regr_avgy(YX) double precision double precision 因变量平均值(sum(Y)/N) select regr_avgy(id,id1) from tbl_test; 2
regr_count(YX) double precision bigint 两个参数都不为NULL的行数  select regr_count(id,id1) from tbl_test; 3
regr_intercept(YX) double precision double precision 根据所有输入点(X,Y)利用最小二乘法计算一个线性方程式。然后返回该直线的Y轴截距 select regr_intercept(id,id) from tbl_test; 0
regr_r2(YX) double precision double precision 相关系数平方 select regr_r2(id,id) from tbl_test; 1
regr_slope(YX) double precision double precision 根据所有输入点(X,Y)利用最小二乘法计算一个线性方程式。然后返回该直线的斜率 select regr_slope(id,id) from tbl_test; 1
regr_sxx(YX) double precision double precision sum(X^2) - sum(X)^2/N  select regr_sxx(id,id) from tbl_test; 2
regr_sxy(YX) double precision double precision sum(X*Y) - sum(X) * sum(Y)/N  select regr_sxy(id,id) from tbl_test; 2
regr_syy(YX) double precision double precision sum(Y^2) - sum(Y)^2/N  select regr_syy(id,id) from tbl_test; 2
stddev(expression)

smallint, int, bigint, real,

double precision, or numeric

double precision for floating-point arguments,

otherwise numeric

同stddev_samp    
stddev_pop(expression)

smallint, int, bigint, real,

double precision, or numeric

double precision for floating-point arguments,

otherwise numeric

总体标准差 select stddev_pop(id) from tbl_test; 0.81649658092772603273
stddev_samp(expression)

smallint, int, bigint, real,

double precision, or numeric

double precision for floating-point arguments,

otherwise numeric

样本标准差 select stddev_samp(id) from tbl_test; 1.00000000000000000000
variance(expression)

smallint, int, bigint, real,

double precision, or numeric

double precision for floating-point arguments,

otherwise numeric

同var_samp    
var_pop(expression)

smallint, int, bigint, real,

double precision, or numeric

double precision for floating-point arguments,

otherwise numeric

总体方差 select var_pop(id) from tbl_test; 0.66666666666666666667
var_samp(expression)

smallint, int, bigint, real,

double precision, or numeric

double precision for floating-point arguments,

otherwise numeric

样本方差 select var_samp(id) from tbl_test; 1.00000000000000000000
test=# insert into tbl_test values (2,'ww','f');
INSERT 0 1
test=# select * from tbl_test;
id | name | sex | id1
----+------+-----+-----
1 | 张三 | m | 1
2 | 李四 | m | 1
3 | 王五 | f | 1
2 | ww | f | 1
(4 rows)

顺序集聚合函数

函数 直接参数类型 聚合参数类型 返回类型 描述 示例 结果
mode() WITHIN GROUP (ORDER BYsort_expression)   任意可排序类型 同排序类型

返回最频繁的输入值(如果有

多个同样频繁的结果,则返回第一个)

select mode() within group (order by id) from tbl_test; 2
percentile_cont(fraction) WITHIN GROUP (ORDER BY sort_expression) double precision double precisionor interval 同排序类型 continuous percentile: returns a value corresponding to the specified fraction in the ordering, interpolating between adjacent input items if needed select percentile_cont(0.25) WITHIN GROUP (ORDER BY id) from tbl_test; 1.75
percentile_cont(fractions) WITHIN GROUP (ORDER BY sort_expression) double precision[] double precisionor interval array of sort expression's type multiple continuous percentile: returns an array of results matching the shape of the fractionsparameter, with each non-null element replaced by the value corresponding to that percentile    
percentile_disc(fraction) WITHIN GROUP (ORDER BY sort_expression) double precision any sortable type same as sort expression discrete percentile: returns the first input value whose position in the ordering equals or exceeds the specified fraction    
percentile_disc(fractions) WITHIN GROUP (ORDER BY sort_expression) double precision[] any sortable type array of sort expression's type multiple discrete percentile: returns an array of results matching the shape of the fractions parameter, with each non-null element replaced by the input value corresponding to that percentile    

postgresql----聚合函数的更多相关文章

  1. PostgreSQL聚合函数的filter子句

    一张表存储了学生id,科目,分数三个字段,求每个学生60分以下与参加的总科目占比.(今天电脑不好用,图片总是这样) 其实一个count(*) filter  就可以查出来,但是没用过PG的一个人竟然说 ...

  2. postgresql 自定义聚合函数

    方法1 CREATE OR REPLACE FUNCTION public.sfun_test1( results numeric[], val numeric) RETURNS numeric[] ...

  3. postgresql 所有聚合函数整理

    SELECT DISTINCT(proname) FROM pg_proc WHERE proisagg order by proname 查所有 SELECT * FROM pg_proc WHER ...

  4. MySQL数据库学习笔记(四)----MySQL聚合函数、控制流程函数(含navicat软件的介绍)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  5. MySQL聚合函数、控制流程函数(含navicat软件的介绍)

    MySQL聚合函数.控制流程函数(含navicat软件的介绍) 一.navicat的引入:(第三方可视化的客户端,方便MySQL数据库的管理和维护) NavicatTM是一套快速.可靠并价格相宜的数据 ...

  6. ORM之自关联、add、set方法、聚合函数、F、Q查询和事务

    一.外键自关联(一对多) 1.建表 # 评论表 class Comment(models.Model): id = models.AutoField(primary_key=True) content ...

  7. MySQL聚合函数、控制流程函数

    [正文] 一.navicat的引入:(第三方可视化的客户端,方便MySQL数据库的管理和维护) NavicatTM是一套快速.可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设 ...

  8. 可以这样去理解group by和聚合函数

    写在前面的话:用了好久group by,今天早上一觉醒来,突然感觉group by好陌生,总有个筋别不过来,为什么不能够select * from Table group by id,为什么一定不能是 ...

  9. TSQL 聚合函数忽略NULL值

    max,min,sum,avg聚合函数会忽略null值,但不代表聚合函数不返回null值,如果表为空表,或聚合列都是null,则返回null.count 聚合函数忽略null值,如果聚合列都是null ...

  10. SQL Server 聚合函数算法优化技巧

    Sql server聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了一个重点,一个程序优化的好不好直接决定了这个程序的声明周期.Sql server聚合函数对一组值 ...

随机推荐

  1. 救基友3(三维BFS)

    救基友记3 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描写叙述   话说CZ因为不守基道.被妖怪抓走了.好基友WP在努力讨好高富帅 ...

  2. 调用 setState 之后发生了什么?

    (1)代码中调用 setState 函数之后,React 会将传入的参数对象与组件当前的状态合并,然后触发所谓的调和过程(Reconciliation).(2)经过调和过程,React 会以相对高效的 ...

  3. 【PMP】项目和运营的区别

    运营管理关注产品的持续性生产和服务的持续运作. 项目与运营会存在产品生命周期的不同时点交叉,例如: 在产品开发.产品升级或提高产量时: 在改进运营或产品开发流程时: 在产品生命周期结束阶段: 在每个收 ...

  4. 全球最全路由DNS服务器IP地址

    全球只有13台路由DNS根服务器,在13台路由服务器中,名字分别为“A”至“M”,其中10台设置在美国,另外各有一台设置于英国.瑞典和日本.下表是这些机器的管理单位.设置地点及最新的IP地址. 供应商 ...

  5. Effective Java 第三版——45. 明智审慎地使用Stream

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  6. 深入浅出理解c++虚函数

    深入浅出理解c++虚函数   记得几个月前看过C++虚函数的问题,当时其实就看懂了,最近笔试中遇到了虚函数竟然不太确定,所以还是理解的不深刻,所以想通过这篇文章来巩固下. 装逼一刻: 最近,本人思想发 ...

  7. 苹果App Store审核指南中文翻译(更新至140227)

    前言 感谢您付出宝贵的才华与时间来开发iOS应用程程序.从职业与报酬的角度而言,这对于成千上万的开发员来说一直都是一项值得投入的事业,我们希望帮助您加入这个成功的组织.我们发布了<App Sto ...

  8. 基于HTML5全屏图文左右滑动切换特效

    基于HTML5全屏图文左右滑动切换特效.这是一款基于jQuery+HTML5实现的全屏图文切换特效代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <main> & ...

  9. 浏览器关闭、刷新、关闭标签事件,兼容IE8,chrome,firefox

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...

  10. GitHub私有代码库将免费开放

    1月8号消息,微软收购 GitHub 后,官方宣布了一项重大更新:免费开放私有代码库, 即 GitHub 用户现在可以免费创建无限量的私有存储库.同时还有另一项更新——GitHub Enterpris ...