为j 值相同,
所以avg 值相同,
计算过程为avg = (8 + 4 + 6) / 3 = 6,
i=2,
j=1,
k=4
时,avg=5.5,计算过程为avg = (8 + 4 + 6 + 4) / 4 = 5.5。
示例2:AVG(DISTINCT k) OVER(PARTITION BY i)
gbase> SELECT *,AVG(DISTINCT k) OVER(PARTITION BY i) AS avg
FROM t1;
+------+------+------+--------+
| i
| j
| k
| avg
|
+------+------+------+--------+
|
2 |
3 |
6 | 6.0000 |
|
2 |
3 |
4 | 6.0000 |
|
2 |
5 |
8 | 6.0000 |
|
2 |
1 |
4 | 6.0000 |
|
3 |
2 |
2 | 5.0000 |
|
3 |
2 |
4 | 5.0000 |
|
3 |
2 |
2 | 5.0000 |
|
3 |
4 |
6 | 5.0000 |
|
3 |
1 |
2 | 5.0000 |
|
3 |
5 |
8 | 5.0000 |
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
898
+------+------+------+--------+
10 rows in set
用例分析:首先根据i 分组,由于没有ORDER BY 部分,则同组内的累加和、
COUNT 值都相等,将同组内的k 值进行累加同时计算COUNT 值,如果遇到不
同组,从0 重新开始。
以i 值为2、2、2、2,j 值为5、3、3、1,k 值为8、4、6、4,avg 值为6、6、6、
6 为例,因为在这4 组数值中,不同的k 值为6、4、8,所以avg= (6 + 4 + 8) / 3 =
6。