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!

浙公网安备 33010602011771号