YashanDB AVG函数

本文内容来自YashanDB官网,原文内容请见 https://doc.yashandb.com/yashandb/23.3/zh/开发手册/SQL参考手册/内置函数/AVG.html

AVG函数计算给定参数的平均值,返回值的类型有以下几种情况:

参数类型 返回值
TINYINT、SMALLINT、INT、BIGINT、NUMBER NUMBER
FLOAT FLOAT
DOUBLE DOUBLE
CHAR NUMBER
VARCHAR NUMBER
NCHAR NUMBER
NVARCHAR NUMBER

其中expr的值为数值型,或可以转换为NUMBER类型的字符型(转换失败返回Invalid number错误)。对于其他类型,函数返回类型不支持。

在单行计算中,当expr的值为NULL时,函数返回NULL。

在多行计算中,函数将忽略expr值为空的行,当所有行均为空时,计算结果为NULL。

聚集函数不可嵌套,因此expr为除聚集函数之外的其他通用表达式。

DISTINCT

表示在计算平均值时,过滤掉重复的行。

ALL

默认值,表示对所有行计算平均值。

示例


SELECT area_no,area_name,DHQ,employee_count FROM area1;
AREA_NO AREA_NAME            DHQ             EMPLOYEE_COUNT

01      华东               Shanghai                      
02      华西               Chengdu                    300
03      华南               Guangzhou                  400
04      华北               Beijing                    300
05      华中               Wuhan                           
  

SELECT AVG(employee_count) res FROM area1;
                RES

         333.333333
  

SELECT AVG(DISTINCT employee_count) res FROM area1;
                 RES

                 350

Copied!

OVER

当指定OVER关键字时,AVG将作为窗口函数,并支持滑动窗口,返回多行的平均值。

analytic_clause

窗口函数通用语法,详情请查阅窗口函数

示例


SELECT year,month,branch,revenue_total FROM finance_info;
YEAR  MONTH BRANCH REVENUE_TOTAL 

2001  01    0201            2888
2021  01    0201           28888
2021  01    0101           38888
2021  02    0101           37778

SELECT year,month,
revenue_total curr,
AVG(revenue_total) OVER (PARTITION BY year ORDER BY month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) tonow
FROM finance_info;
YEAR  MONTH        CURR       TONOW 

2001  01           2888        2888
2021  01          28888       28888
2021  01          38888       33888
2021  02          37778  35184.6667


SELECT year,month,
AVG(revenue_total) curr,
AVG(AVG(revenue_total)) OVER (PARTITION BY year ORDER BY month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) tonow
FROM finance_info
GROUP BY year,month;
YEAR  MONTH        CURR       TONOW 

2001  01           2888        2888
2021  01          33888       33888
2021  02          37778       35833

Copied!

posted @ 2025-04-09 19:14  YashanDB  阅读(11)  评论(0)    收藏  举报