postgresql----聚合函数

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

测试表

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    
时间: 2024-09-27 02:56:06

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

PostgreSQL 聚合函数共享申请的内存空间

CREATE AGGREGATE Rbitmap_union2 (Rbitmap) ( sfunc = myfunction, stype = mytype, FINALFUNC = myfunction_final ); 在编写聚合函数时,对每一行都会重复调用指定同一函数,如果要处理的数据是累加的,那么如果不在每次调用之间共享内存空间,而是不停的申请释放新的内存,那么速度会变得很慢,所以在这时共享内存是十分有用的: PostgreSQL 有 MemoryContext 的概念,如果普通的使用

postgreSql聚合函数row_to_json初使用

把一行数据按Json字符串形式返回 select row_to_json(  table_code)from table_code select array_to_json( array_agg(row_to_json(code))) from ( select 子查询)

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

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4030506.html 联系方式:[email protected] [正文] 一.navicat的引入:(第三方可视化的客户端,方便MySQL数据库的管理和维护) NavicatTM是一套快速.可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设.它的设计符合数据库管理员.开

PostgreSQL调用函数

PostgreSQL允许函数有命名参数,可以被位置 或名称表示法调用.名称表示法对有大量参数的函数特别有用,因为它更加明确和可靠的标记了形参和实参之间的联系.在位置表示法里,一个函数调用的参数值要用与函数声明相同的顺序来写出.在名称表示法里,参数是通过名称来与函数参数相匹配的,可以以任意顺序写出. 不管用那种表示法,在函数声明时给出的有默认值的参数在调用时不必写出.但是这在名称表示法中是特别有用的,因为参数的任意组合都是可以省略的.而在位置表示法中,参数只能从右到左省略. PostgreSQL也

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

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4030506.html [正文] 一.navicat的引入:(第三方可视化的客户端,方便MySQL数据库的管理和维护) NavicatTM是一套快速.可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设.它的设计符合数据库管理员.开发人员及中小企业的需要.Navicat 是以直

聚合函数的使用

聚合函数在统计阿~汇总阿,都灰常的常用.但是有一个小点是要注意一下下的 create table #Tmp(a int ,b int ) insert into #Tmp(a,b) values (1,null),(null,null),(null,3),(2,4) select * from #Tmp a b ----------- ----------- 1 NULL NULL NULL NULL 3 2 4 这里我就简单用 count 和 sum 和 avg 3个最常用的函数试一下. 这个

sqlite之聚合函数的使用

聚合函数对一组值执行计算并返回单一的值.聚合函数对一组值执行计算,并返回单个值.除了 COUNT 以外,聚合函数都会忽略空值. 聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用. count(*) --返回指定表的数量 例如:select count(*) from studen (where ....); sum(*)--返回数据之和(仅对数值类型字段起作用) 例如: 返回三科成绩总和: select sum(math)+sum(chinese)+sum(english)

【原创】用第三方语言编写PostgreSQL 存储函数

在PostgreSQL里,所有的存储函数需求都可以用PLPGSQL来实现.同时也支持用第三方语言来编写,这个就得看自己哪个方面熟练了.不过要注意的一点是 PLPGSQL的效率怎么着都比其他第三方语言来的高效.比如,简单的插入表的存储函数: CREATE OR REPLACE FUNCTION ytt.insert_plpgsql(f_num integer) RETURNS void LANGUAGE plpgsql AS $ytt$ declare i int := 0; v_rank int

SQL Server之 (二) SQL语句 模糊查询 空值处理 聚合函数

(二) SQL语句  模糊查询  空值处理  聚合函数 自己学习笔记,转载请注明出处,谢谢!---酸菜 SQL :结构化查询语言(Structured Query Language),关系数据库管理系统的标准语言. Sybase与Mircosoft对标准SQL做了扩展:T-SQL (Transact-SQL); 注:①SQL对大小写的敏感取决于排序规则,一般不敏感; ②SQL对单引号的转义,用两个单引号来表示一个单引号; ③SQL执行顺序: 1→2→3→4 select  * ---------

7-07聚合函数

查询中使用聚合函数: SUM()返回表达式中所有数值的和,空值被省略,用于数字类型的列. AVG()返回表达式中所有数值的平均数,空值被省略,用于数字类型的列. MAX()返回表达式中的最大值. MIN()返回表达式中的最小值. --查询编号为6的销售总量 SELECT SUM(Amount) FROM OrderInfo WHERE commid=6 --图书音像的进货价 SELECT AVG(inprice)FROM Commid WHERE ID=2 --求进货价中的最高和最低价: SEL