网站建设上市,带娃儿做的工作网站,关键词的选取原则,重庆建筑工程安全施工管理安全网聚合函数 专栏内容#xff1a; postgresql内核源码分析手写数据库toadb并发编程 个人主页#xff1a;我的主页 管理社区#xff1a;开源数据库 座右铭#xff1a;天行健#xff0c;君子以自强不息#xff1b;地势坤#xff0c;君子以厚德载物. 文章目录 聚合函数一、前…聚合函数 专栏内容 postgresql内核源码分析手写数据库toadb并发编程 个人主页我的主页 管理社区开源数据库 座右铭天行健君子以自强不息地势坤君子以厚德载物. 文章目录 聚合函数一、前言 二、概述 三、语法介绍 四、通用聚集函数 平均值 avg最大值 max最小值 min求和 sum行数统计 count字符串连接 string_agg 五、统计类聚集函数 平方和乘积和标准差标准方差 六、总结 七、结尾 一、前言 在数据库管理系统中SQL结构化查询语言的聚集函数扮演着至关重要的角色。它们能够对一组值执行计算并返回单个值为数据分析与决策提供了极大的便利。聚集函数不仅简化了复杂的数据处理任务还使得数据的统计与汇总变得高效且准确。
常见的SQL聚集函数包括求和SUM、平均值AVG、最大值MAX、最小值MIN以及计数COUNT等。这些函数能够快速地处理大量数据提取出关键信息帮助用户更好地了解数据的分布与特征。
随着大数据时代的到来数据的规模与复杂性不断增加SQL聚集函数的重要性也日益凸显。它们为数据科学家、分析师以及开发者提供了强大的工具使得数据的挖掘与分析变得更加深入与精准。因此深入了解和掌握SQL聚集函数的使用方法对于提升数据处理能力和优化决策过程具有重要意义。
二、概述 聚集函数把输入的集合通过计算得到一个单一值在postgresql 中内建了许多聚集函数满足常用的统计分析主要分为以下几类
通用聚集函数统计性聚集函数有序集聚集函数假想集聚集
在这里我们分享几个经常用到的通用聚集函数 avg, max,min,sum,count和字符串连接以及用于分析偏差的聚集函数。 三、语法介绍 一个聚集表达式表示在由一个查询选择的行上应用一个聚集函数。一个聚集函数将多个输入减少到一个单一输出值例如对输入的求和或平均。一个聚集表达式的语法是下列之一
aggregate_name (column1 [ , … ] [ order_by_clause ] ) aggregate_name (DISTINCT column1 [ , … ] [ order_by_clause ] ) aggregate_name ( * )
说明 这里aggregate_name是一个聚集函数名称 column1是一个表的列名一般聚集函数会对每一行进行计算当指定distinct时重复值只参与计算一次 可选order by 子句对指定列进行排序当然对于max,min 来讲排序是没有意义的而对于字符串连接来讲可以指定结果的显示次序 当输入为 *时所有列都会参与计算 大部分聚集函数忽略空输入这样其中一个或多个表达式得到空值的行将被丢弃
下面来介绍几个常用的集聚函数。 四、通用聚集函数 这里列举一些常用的聚集函数。
平均值 avg
avg 计算指定列的算术平均值它可以输入的类型以及对应的输出类型有
avg ( smallint ) → numericavg ( integer ) → numericavg ( bigint ) → numericavg ( numeric ) → numericavg ( real ) → double precisionavg ( double precision ) → double precisionavg ( interval ) → interval
计算所有非空输入值的平均值(算术平均值)可以看到avg内置的求平均函数适配了各种数值类型 最大值 max
max 计算非空输入值的最大值;
max ( type ) → type 与输入类型相同
type 类型可以是任何数字、字符串、日期/时间或enum类型 以及inet, interval, money, oid, pg_lsn,tid和任何这些类型的数组。
最小值 min
min 计算非空输入值的最小值
min ( type ) → type 与输入类型相同
type 类型可以是任何数字、字符串、日期/时间或enum类型 以及inet, interval,money, oid, pg_lsn,tid和任何这些类型的数组。
求和 sum
sum 计算非空输入值的总和它可以支持以下类型的输入同时对应输出类型
sum ( smallint ) → bigintsum ( integer ) → bigintsum ( bigint ) → numericsum ( numeric ) → numericsum ( real ) → realsum ( double precision ) → double precisionsum ( interval ) → intervalsum ( money ) → money
与avg相比这里多了一种money类型。
行数统计 count
count计算输入值不为空的输入行的数量, 有两种写法
count ( * ) → bigintcount ( column1 ) → bigint
一种是*,它是计算所有行的数量而另一种传入列名这时只计算当前列的非空值的行数如果当前列没有非空值那么与前一种结果相同。
当然还有一种常见的写法count(1)这里传入常量1它的结果与第一种写法相同计算所有行的行数量。
下面通过一个例子来看一下效果
postgres# select * from products ;product_id | product_name | price | category
---------------------------------------------2 | shirt | 202.40 | type23 | cake | 37.80 | type45 | hat | 88.40 | type26 | milk | 19.80 | type41 | iphone | 8999.01 | type57 | keyboard | 92.01 | type54 | pencil | 8.20 | type18 | desk | 120.00 |
(8 rows)postgres# select count(1) from products ;count
-------8
(1 row)postgres# select count(category) from products ;count
-------7
(1 row)postgres# select count(distinct category) from products ;count
-------4
(1 row)
这里使用列名category统计就会排除空值行当然还可以对列的值进行去重distinct, 之后统计实际类型的数量。
字符串连接 string_agg
string_agg连接非空输入值到字符串中支持两种输入类型
string_agg ( value text, delimiter text ) → textstring_agg ( value bytea, delimiter bytea ) → bytea
value是输入的内容delimiter是分隔符
第一个值之后的每个值前面都有相应的分隔符(delimiter)(如果它不为空);
postgres# select string_agg(product_name,,) from products ;string_agg
-------------------------------------------------shirt,cake,hat,milk,iphone,keyboard,pencil,desk
(1 row)可以看到经过字符串连接之后产品名之间按指定分隔符进行连接起来。 五、统计类聚集函数 当做一些简单的统计分析时可以使用统计学中的公式进行计算这里只列了几个常用的通过类似的命名可以查看postgresql帮助文档已经内置了很多统计类型的聚集函数。
平方和
regr_sxx ( Y double precision, X double precision ) → double precision
计算自变量的“平方和” 计算公式为sum(X2) - sum(X)2/N. postgres# select regr_sxx(product_id,price) from products ;regr_sxx
-------------------69613296.20214999
(1 row)
regr_syy ( Y double precision, X double precision ) → double precision
计算因变量的“平方和”计算公式为 sum(Y2) - sum(Y)2/N. postgres# select regr_syy(product_id,price) from products ;regr_syy
----------42
(1 row)
注意这里的Y 是前面一个输入。
乘积和
regr_sxy ( Y double precision, X double precision ) → double precision
计算独立变量乘以因变量的“交叉积和” 计算公式为sum(X*Y) - sum(X) * sum(Y)/N.
标准差
计算输入值的样本标准差;
stddev_samp ( numeric_type ) → double precision / numeric
在输入值为real 或 double precision类型时输出值类型为 double precision其它数值类型时为 numeric。
postgres# select stddev_samp(price) from products ;stddev_samp
-------------------3153.530814865639
(1 row)标准方差
计算输入值的样本方差(样本标准差的平方);
var_samp ( numeric_type ) → double precision / numeric
在输入值为real 或 double precision类型时输出值类型为 double precision其它数值类型时为 numeric。 六、总结 本文分享了通用类型和统计类型的常用聚集函数它们经常被使用到也是数据库中对数据使用的一些常见方式还有很多类似的聚集函数可以查看postgresql帮助手册。
七、结尾 非常感谢大家的支持在浏览的同时别忘了留下您宝贵的评论如果觉得值得鼓励请点赞收藏我会更加努力 作者邮箱studysenllang.onaliyun.com 如有错误或者疏漏欢迎指出互相学习。
注未经同意不得转载