返回首页

gbase数据、南大通用产品文档:GBase8aSUM OVER 函数

更新日期:2024年09月11日

语法
SUM([DISTINCT/ALL] expr) OVER([PARTITION BY …] [ORDER BY … [ASC/DESC] ]
功能描述
计算组内表达式的移动累加和。
示例
示例1:SUM(k) OVER(PARTITION BY i ORDER BY j DESC)
gbase> DROP TABLE IF EXISTS t1;
Query OK, 0 rows affected

gbase> CREATE TABLE t1(i int, j int,k int);
Query OK, 0 rows affected

gbase> INSERT INTO t1 VALUES(2,1,4),(2,3,6),(2,3,4),(2,5,8),(3,2,2),(3,2,4),(3,2,2),(3,4,6),(3,1,
2),(3,5,8);
Query OK, 10 rows affected
Records: 10 Duplicates: 0 Warnings: 0

gbase> SELECT *,SUM(k) OVER(PARTITION BY i ORDER BY j DESC) AS sum FROM
t1;
+------+------+------+------+
| i | j | k | sum |
+------+------+------+------+
| 2 | 5 | 8 | 8 |
| 2 | 3 | 4 | 18 |
| 2 | 3 | 6 | 18 |
| 2 | 1 | 4 | 22 |
| 3 | 5 | 8 | 8 |
| 3 | 4 | 6 | 14 |
| 3 | 2 | 2 | 22 |
| 3 | 2 | 4 | 22 |
| 3 | 2 | 2 | 22 |
| 3 | 1 | 2 | 24 |
+------+------+------+------+
10 rows in set
用例分析:首先会根据i 分组,在同组内,根据j 降序排列,从每组的第一个值开

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 583
始向后累加k 值,
相同的j 值,
对应的累加和相同,
都是加到最后一个j 值对应的k
值,如果遇到不同组,从0 开始重新累加。
注意
NULL 值的处理方式同聚合函数sum 类似,如果全为NULL 值,则结果为NULL,否
则NULL 不进行累加。
以i 值为2、2、2、2,j 值为5、3、3、1,K 值为8、4、6、4,sum 值为8、18、
18、22 为例,i=2,j=5,k=8 时,sum=8,i=2,j=3,k=4 以及i=2,j=3,k=6 时,
因为j 值相同,所以sum 值相同,计算过程为sum = 8 + 4 + 6 = 18。
示例2:SUM(distinct k) OVER(PARTITION BY i)
gbase> SELECT *,SUM(distinct k) OVER(PARTITION BY i) AS sum FROM t1;
+------+------+------+------+
| i | j | k | sum |
+------+------+------+------+
| 2 | 3 | 6 | 18 |
| 2 | 3 | 4 | 18 |
| 2 | 5 | 8 | 18 |
| 2 | 1 | 4 | 18 |
| 3 | 2 | 2 | 20 |
| 3 | 2 | 4 | 20 |
| 3 | 2 | 2 | 20 |
| 3 | 4 | 6 | 20 |
| 3 | 1 | 2 | 20 |
| 3 | 5 | 8 | 20 |
+------+------+------+------+
10 rows in set
用例分析:
首先根据i 分组,
由于没有ORDER BY 部分,
则同组内的累加和都相等,
将同组内的不重复的k 值进行累加,如果遇到不同组,从0 重新开始。
以i 值为2、2、2、2,j 值为5、3、3、1,k 值为8、4、6、4,sum 值为18、18、
18、18 为例,因为在这4 组数值中,不同的k 值为6、4、8,所以sum= 6 + 4 + 8 =
18。

在高可用性集群中,
使用 SDS_ALTERNATE 配置参数来定义在主服务器与 SD 辅助服务器之
间通信的替代方式。
onconfig.std 值
NONE(未配置 SD 辅助服务器替代通信路径。)

在主服务器与 SD 辅助服务器之间,用作替代通信路径的 blobspace 名称。
生效
编辑 onconfig 文件并重启数据库服务器之后。
当您通过运行 onmode -wf 命令在 onconfig 文件中动态地重置该值时。
当您通过运行 onmode -wm 命令重置内存中的该值时。
用法
如果在主服务器与 SD 辅助服务器之间的网络不可用,
则您设置 SDS_ALTERNATE 配置参数
并创建共享 blobspace 来允许高可用性集群中的主服务器和所有 SD 辅助服务器使用替
代通信路径。 当 SD 服务器即将故障转移并成为主服务器,但 TCP/IP 通信不可用时,使
用 SDS_ALTERNATE 配置参数设置的共享 blobspace 将关闭程序传递到原先的主服务器。
在主服务器和所有 SD 辅助服务器上,设置 SDS_ALTERNATE 配置参数为相同的值。
设置 SDS_ALTERNATE 配置参数之前,您必须在主服务器上创建共享 blobspace。例如,在
主服务器上输入下列命令来创建名为 sds_alt_comm 的 blobspace:
onspaces -c -b sds_alt_comm -g -p -o -s
请运行下列命令来切换到下一个逻辑日志文件,以便启用新创建的 blobspace:
onmode -l
在高可用性集群中的每一 SD 辅助服务器上,
设置 SDS_ALTERNATE 配置参数来指向主服务
器上的 blobspace。
SDS_ALTERNATE sds_alt_comm

No serial, rowid, or primary key specified in the statement
可更新可滚动功能仅适用于在查询中指定了具有 SERIAL 列、主键或行 ID 的表。如果表
没有这些属性,则会创建一个可更新的可滚动的游标。