ITPub博客

首页 > 数据库 > 国内数据库 > YashanDB SUM函数

YashanDB SUM函数

国内数据库 作者:崖山数据库系统YashanDB 时间:2025-08-04 11:43:54 0 删除 编辑

SUM

语法图

SUM函数计算给定参数 expr的数值和,其返回值类型如下:

expr类型 返回值
TINYINT、SMALLINT BIGINT
INT、BIGINT NUMBER
FLOAT FLOAT
DOUBLE DOUBLE

当参数为其他类型且无法转换为上述类型时,不执行计算并返回类型转换错误或是类型不支持。

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

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

聚集函数不可嵌套,因此expr为除聚集函数之外的其他通用表达式,其类型只能是数值型、字符型。

DISTINCT

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

ALL

默认值,表示对所有行计算数值和。

示例

-- branches1表中包含了区域信息、各区员工数量等
  -- 分区域计算员工总数量,对01、04区域对应员工数量为空的行在计算时被忽略,对02区域对应员工数量只有一行且值为空,此时计算返回NULL结果SELECT area_no,SUM(employee_count) sum FROM branches1 GROUP BY area_no;AREA_NO                 SUM------- -------------------
                         7001                       7004                       4002                       05                       40
  -- 分区域计算一个常量的数值和SELECT area_no,SUM(10) sum FROM branches1 GROUP BY area_no;AREA_NO         SUM------- -----------
                 2001               4004               4002               1005               10
Copied!

OVER

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

analytic_clause

窗口函数通用语法。

示例

-- finance_info表记录了分年、月、机构的收入情况SELECT year,month,branch,revenue_total FROM finance_info;YEAR  MONTH BRANCH REVENUE_TOTAL 
----- ----- ------ ------------- 2001  01    0201            28882021  01    0201           288882021  01    0101           388882021  02    0101           37778SELECT year,month,revenue_total curr,SUM(revenue_total) OVER (PARTITION BY year ORDER BY month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) tonowFROM finance_info;YEAR  MONTH        CURR       TONOW 
----- ----- ----------- ----------- 2001  01           2888        28882021  01          28888       288882021  01          38888       677762021  02          37778      105554-- 分年统计每月所有机构的收入和,及年初至今所有机构的收入和SELECT year,month,SUM(revenue_total) curr,SUM(SUM(revenue_total)) OVER (PARTITION BY year ORDER BY month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) tonowFROM finance_infoGROUP BY year,month;YEAR  MONTH        CURR       TONOW 
----- ----- ----------- ----------- 2001  01           2888        28882021  01          67776       677762021  02          37778      105554
代码
sum::= SUM "(" [DISTINCT|ALL] expr ")" [OVER "(" analytic_clause ")"]analytic_clause::= "(" [query_partition_clause] [order_by_clause [windowing_clause]] ")"

SUM函数计算给定参数 expr的数值和,其返回值类型如下:

expr类型 返回值
TINYINT、SMALLINT BIGINT
INT、BIGINT NUMBER
FLOAT FLOAT
DOUBLE DOUBLE

当参数为其他类型且无法转换为上述类型时,不执行计算并返回类型转换错误或是类型不支持。

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

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

聚集函数不可嵌套,因此expr为除聚集函数之外的其他通用表达式,其类型只能是数值型、字符型。

DISTINCT

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

ALL

默认值,表示对所有行计算数值和。

示例

-- branches1表中包含了区域信息、各区员工数量等
  -- 分区域计算员工总数量,对01、04区域对应员工数量为空的行在计算时被忽略,对02区域对应员工数量只有一行且值为空,此时计算返回NULL结果SELECT area_no,SUM(employee_count) sum FROM branches1 GROUP BY area_no;AREA_NO                 SUM------- -------------------
                         7001                       7004                       4002                       05                       40
  -- 分区域计算一个常量的数值和SELECT area_no,SUM(10) sum FROM branches1 GROUP BY area_no;AREA_NO         SUM------- -----------
                 2001               4004               4002               1005               10
Copied!

OVER

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

analytic_clause

窗口函数通用语法。

示例

-- finance_info表记录了分年、月、机构的收入情况SELECT year,month,branch,revenue_total FROM finance_info;YEAR  MONTH BRANCH REVENUE_TOTAL 
----- ----- ------ ------------- 2001  01    0201            28882021  01    0201           288882021  01    0101           388882021  02    0101           37778SELECT year,month,revenue_total curr,SUM(revenue_total) OVER (PARTITION BY year ORDER BY month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) tonowFROM finance_info;YEAR  MONTH        CURR       TONOW 
----- ----- ----------- ----------- 2001  01           2888        28882021  01          28888       288882021  01          38888       677762021  02          37778      105554-- 分年统计每月所有机构的收入和,及年初至今所有机构的收入和SELECT year,month,SUM(revenue_total) curr,SUM(SUM(revenue_total)) OVER (PARTITION BY year ORDER BY month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) tonowFROM finance_infoGROUP BY year,month;YEAR  MONTH        CURR       TONOW 
----- ----- ----------- ----------- 2001  01           2888        28882021  01          67776       677762021  02          37778      105554


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3092697/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: YashanDB SYSDATE函数
请登录后发表评论 登录
全部评论
崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,融入原创理论,支持单机/主备、共享集群、分布式等多种部署方式,覆盖OLTP/HTAP/OLAP交易和分析混合负载场景,为客户提供一站式的企业级融合数据管理解决方案。

注册时间:2023-04-11

  • 博文量
    722
  • 访问量
    639747