前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >SQL聚合函数 AVG

SQL聚合函数 AVG

作者头像
用户7741497
发布于 2022-03-27 04:03:52
发布于 2022-03-27 04:03:52
3.3K10
代码可运行
举报
文章被收录于专栏:hml_知识记录hml_知识记录
运行总次数:0
代码可运行

SQL聚合函数 AVG

返回指定列值的平均值的聚合函数。

大纲

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
AVG([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-指定AVG返回表达式所有值的平均值。 如果没有指定关键字,则为默认值。
  • DISTINCT - 可选 - DISTINCT子句,指定AVG只计算一个值的唯一实例的平均值。 DISTINCT可以指定BY(col-list)子句,其中col-list可以是单个字段,也可以是逗号分隔的字段列表。
  • expression - 任何有效的表达式。 通常是包含要取平均值的数据值的列的名称。
  • %FOREACH(col-list) - 可选—列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选 - 应用在HAVING子句中找到的条件。

AVG返回NUMERICDOUBLE数据类型。 如果expressionDOUBLE类型,AVG返回DOUBLE; 否则,它返回NUMERIC

描述

AVG聚合函数返回表达式值的平均值。 通常,表达式是查询返回的多行中字段的名称(或包含一个或多个字段名称的表达式)。

AVG可以用于引用表或视图的SELECT查询或子查询。 AVG可以出现在SELECT列表或HAVING子句中,与普通字段值一起出现。

AVG不能在WHERE子句中使用。 AVG不能在JOINON子句中使用,除非SELECT是子查询。

像所有聚合函数一样,AVG可以带有一个可选的DISTINCT子句。 AVG(DISTINCT col1)仅对不同(唯一)的col1字段值进行平均。 AVG(DISTINCT BY(col2) col1)仅对col2值不同(唯一)的记录中的col1字段值进行平均值。 但是请注意,不同的col2值可能包含一个单独的NULL值。

数据值

对于非double表达式值,AVG返回双精度浮点数。 AVG返回的值的精度是18。 返回值的比例取决于表达式的精度和比例:AVG返回值的比例等于18减去表达式的精度,加上表达式的比例(as=ap-ep+es)

对于DOUBLE表达式值,精度为0。

AVG通常应用于具有数值值的字段或表达式,例如数字字段或日期字段。 默认情况下,聚合函数使用逻辑(内部)数据值,而不是Display值。 因为没有执行类型检查,所以可以(尽管很少有意义)对非数字字段调用类型检查; AVG计算非数值,包括空字符串(")为零(0)。如果expression是数据类型VARCHAR,则返回值为数据类型DOUBLE

在导出AVG聚合函数值时,数据字段中的NULL值将被忽略。 如果查询没有返回行,或者返回的所有行的数据字段值为NULL, AVG返回NULL

对单个值求平均值

如果提供给AVG的所有表达式值都是相同的,那么结果的平均值取决于访问表中的行数(除数)。 例如,如果表中的所有行对某个特定列具有相同的值,那么该列的平均值就是一个计算值,它可能与个别列中的值略有不同。 为了避免这种差异,可以使用DISTINCT关键字。

下面的例子展示了计算平均值如何产生轻微的不平等。 第一个查询不引用表行,所以AVG通过除以1进行计算。 第二个查询引用表的行,因此AVG通过除以表中的行数进行计算。 第三个查询引用了表行,但是平均了单个值的DISTINCT值; 在这种情况下,AVG计算除以1

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ClassMethod Avg()
{
    s pi = $ZPI
    &sql(SELECT :pi,AVG(:pi) INTO :p,:av FROM Sample.Person)
    w p," pi的值",!
    w av," avg of pi/1",!
    &sql(SELECT Name,:pi,AVG(:pi) INTO :n,:p,:av FROM Sample.Person)
    w av," avg calculated using numrows",!
    &sql(SELECT Name,:pi,AVG(DISTINCT :pi) INTO :n,:p,:av FROM Sample.Person)
    w av," avg of pi/1"
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
3.141592653589793238 pi的值
3.141592653589793238 avg of pi/1
3.141592653589793206 avg calculated using numrows
3.141592653589793206 avg of pi/1

优化

SQL优化AVG计算可以使用位片索引,如果这个索引是为字段定义的。

当前事务期间所做的更改

与所有聚合函数一样,无论当前事务的隔离级别如何,AVG总是返回数据的当前状态,包括未提交的更改。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
1
1
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
SQL聚合函数 STDDEV, STDDEV_SAMP, STDDEV_POP
除非表达式的数据类型为DOUBLE,否则这些函数将返回数字数据类型。如果表达式为DOUBLE,则返回DOUBLE。
用户7741497
2022/03/27
1.2K0
SQL聚合函数 MIN
MIN聚合函数返回表达式的最小值(最小值)。通常,表达式是查询返回的多行中的字段名称(或包含一个或多个字段名称的表达式)。
用户7741497
2022/03/27
1.3K0
SQL聚合函数 JSON_ARRAYAGG
一个简单的JSON_ARRAYAGG(或JSON_ARRAYAGG ALL)返回一个JSON数组,其中包含所选行中string-expr的所有值。 字符串-expr为空字符串(")的行由数组中的(" u0000")表示。 字符串-expr为NULL的行不包含在数组中。 如果只有一个字符串-expr值,并且是空字符串("),JSON_ARRAYAGG将返回JSON数组["\u0000"]。 如果所有的string-expr值为NULL, JSON_ARRAYAGG返回一个空的JSON数组[]。
用户7741497
2022/03/27
2K0
SQL命令 SELECT(四)
WHERE子句限定或取消查询选择中的特定行。 符合条件的行是那些条件表达式为真的行。 条件表达式是逻辑测试(谓词)的列表,可以通过AND和OR逻辑操作符链接这些测试(谓词)。 这些谓词可以使用NOT一元逻辑操作符进行反转。
用户7741497
2022/05/06
1.4K0
SQL命令 FROM(二)
这个可选关键字在查询的FROM子句中指定。 它建议 IRIS使用多个处理器(如果适用)并行处理查询。 这可以显著提高使用一个或多个COUNT、SUM、AVG、MAX或MIN聚合函数和/或GROUP BY子句的某些查询的性能,以及许多其他类型的查询。 这些通常是处理大量数据并返回小结果集的查询。 例如,SELECT AVG(SaleAmt) FROM %PARALLEL User.AllSales GROUP BY Region使用并行处理。
用户7741497
2022/05/05
1.7K0
SQL聚合函数 VARIANCE, VAR_SAMP, VAR_POP
这些函数返回NUMERIC数据类型,除非表达式是数据类型DOUBLE。 如果expression为DOUBLE,则返回DOUBLE。
用户7741497
2022/03/27
1.7K0
SQL聚合函数 COUNT
COUNT可以在引用表或视图的SELECT查询或子查询中使用。 COUNT可以在SELECT列表或HAVING子句中与普通字段值一起出现。
用户7741497
2022/03/27
3.8K1
SQL聚合函数 LIST
一个简单的LIST(或LIST ALL)返回一个字符串,其中包含一个逗号分隔的列表,该列表由所选行中string-expr的所有值组成。 其中string-expr为空字符串(")的行由逗号分隔列表中的占位符逗号表示。 string-expr为NULL的行不包含在逗号分隔的列表中。 如果只有一个string-expr值,并且是空字符串("),LIST返回空字符串。
用户7741497
2022/03/27
2K0
SQL命令 HAVING(一)
可选的HAVING子句出现在FROM子句、可选的WHERE和GROUP BY子句之后,可选的ORDER BY子句之前。
用户7741497
2022/05/05
1.5K0
SQL聚合函数 MAX
MAX聚合函数返回表达式的最大值。 通常,表达式是查询返回的多行中字段的名称(或包含一个或多个字段名称的表达式)。
用户7741497
2022/03/27
1.2K0
SQL聚合函数功能和用法解析
  我们知道数据库通常包含大量数据,要从海量的数据中找到我们需要的某条记录无异于大海捞针,不过通过SQL语言我们可以找到很多方法从数据库中提取我们要查找的特定数据,就是通过这些方法我们才能找到“列举出七八两个月中购买了西伯利亚羊毛的所有顾客的姓名”这类问题的答案。
全栈程序员站长
2022/06/24
8500
SQL聚合函数 %DLIST
%DLIST聚合函数返回一个ObjectScript %List结构,其中包含指定列中的值作为列表元素。
用户7741497
2022/03/27
1.2K0
SQL聚合函数 SUM
SUM返回与expression相同的数据类型,但有如下异常:TINYINT、SMALLINT和INTEGER返回的数据类型都是INTEGER。
用户7741497
2022/03/27
1.4K0
SQL聚合函数 XMLAGG
XMLAGG聚合函数返回由string-expr中的所有值组成的串接字符串。 返回值的数据类型为VARCHAR,默认长度为4096。
用户7741497
2022/03/27
1.3K0
SQL命令 DISTINCT
可选DISTINCT子句出现在SELECT关键字之后、可选TOP子句和第一个SELECT-ITEM之前。
用户7741497
2022/04/22
4.4K0
SQL聚合函数「建议收藏」
一、知识点 聚合函数对组执行计算并返回每个组唯一的值。GROUP BY子句通常与聚合函数一起用于统计数据。GROUP BY子句将行排列成组,聚合函数返回每个组的统计量。 常用的聚合函数有:COUNT(),SUM(),AVG(),MIN(),MAX()。 COUNT(),其作用主要是返回每个组的行数,也会返回有NULL值的列,可用于数字和字符列。 SUM(),主要用于返回表达式中所有的总和,忽略NULL值,仅用于数字列。 AVG(),返回表达式所有的平均值,仅用于数字列并且自动忽略NULL值。 MIN(),返回表达式中的最小值,忽略NULL值,可用于数字、字符和日期时间列。 MAX(),返回表达式中的最大值,忽略NULL值,可用于数字、字符和日期时间列。 二、案例分享 1.用count()返回课程数量。并查询课程进行对比。
全栈程序员站长
2022/06/24
8870
SQL聚合函数「建议收藏」
SQL函数 XMLFOREST
SQL函数 XMLFOREST格式化多个 XML 标记以包含表达式值的函数。大纲XMLFOREST(expression [AS tag][,expression [AS tag]])参数 expression - 任何有效的表达式。通常是包含要标记的数据值的列的名称。当指定为逗号分隔列表时,列表中的每个表达式都将包含在其自己的 XML 标记标记中。 AS tag - 可选 — XML 标记标记的名称。如果指定了标签,则 AS 关键字是必需的。保留标签中字母的大小写。 用双引号括起来的标签是可选的。如果省略
用户7741497
2022/08/02
1.1K0
SQL优化极简法则,还有谁不会?
SQL 本身并不难学,编写查询语句也很容易,但是想要编写出能够高效运行的查询语句却有一定的难度。
爱撒谎的男孩
2021/01/06
1.1K0
【Java 进阶篇】深入理解 SQL 聚合函数
在 SQL 数据库中,聚合函数是一组强大的工具,用于处理和分析数据。它们可以帮助您对数据进行统计、计算总和、平均值、最大值、最小值等操作。无论您是数据库开发者、数据分析师还是希望更好地了解 SQL 数据库的用户,了解聚合函数都是非常重要的。
繁依Fanyi
2023/10/12
6110
【Java 进阶篇】深入理解 SQL 聚合函数
SQL中的聚合函数介绍
如果想要把null当做0,那么可以使用IsNull函数把null转换成0,语法如下:
全栈程序员站长
2022/06/24
2.2K0
SQL中的聚合函数介绍
相关推荐
SQL聚合函数 STDDEV, STDDEV_SAMP, STDDEV_POP
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文