yiguolei commented on code in PR #2671: URL: https://github.com/apache/doris-website/pull/2671#discussion_r2244479667
########## i18n/zh-CN/docusaurus-plugin-content-docs/current/sql-manual/sql-functions/scalar-functions/array-functions/array-cum-sum.md: ########## @@ -5,50 +5,182 @@ } --- +## array_cum_sum + +<version since="2.0.0"> + + +</version> + ## 描述 -返回数组的累计和。数组中的`NULL`值会被跳过,并在结果数组的相同位置设置`NULL`。 +计算数组的累积和。函数会从左到右遍历数组,计算每个位置之前(包括当前位置)所有元素的和,返回一个与原数组等长的新数组。 ## 语法 + ```sql -ARRAY_CUM_SUM(<arr>) +array_cum_sum(ARRAY<T> arr) ``` -## 参数 -| 参数 | 说明 | -|---|---| -| `<arr>` | 用于计算累加和的数组 | +### 参数 + +- `arr`:ARRAY\<T> 类型,要计算累积和的数组。支持列名或常量值。 + +**T 支持的类型:** + - 数值类型:TINYINT、SMALLINT、INT、BIGINT、LARGEINT、FLOAT、DOUBLE、DECIMALV2、DECIMALV3(包括DECIMAL32、DECIMAL64、DECIMAL128I、DECIMAL256) -## 返回值 -返回一个数组。特殊情况: -- 数组中的`NULL`值会被跳过,并在结果数组的相同位置设置`NULL`。 +### 返回值 -## 举例 +返回类型:ARRAY\<T> + +返回值含义: + +- 返回一个与输入数组等长的新数组,每个位置的值为原数组从开始到当前位置的所有元素之和 +- NULL:如果输入数组为 NULL + +使用说明: +- 函数会尝试将所有元素转换为兼容的数值类型进行累积和计算。仅支持以下类型的直接累积: + - 整数类型(TINYINT、SMALLINT、INT、BIGINT、LARGEINT) + - 浮点类型(FLOAT、DOUBLE) + - 十进制类型(DECIMALV2、DECIMALV3,包括 DECIMAL32、DECIMAL64、DECIMAL128I、DECIMAL256) +- 如果数组包含其他类型(如字符串、日期等),会尝试将元素转换为 DOUBLE 类型。转换失败的元素结果为 null,不参与累积和。 +- 累积和的返回类型根据输入类型自动选择: + - 输入为 DOUBLE 或 FLOAT 时,返回 ARRAY\<DOUBLE> + - 输入为整数类型时,返回 ARRAY\<BIGINT> 或 ARRAY\<LARGEINT> + - 输入为 DECIMAL 时,返回 ARRAY\<DECIMAL>,保持原精度和标度 +- 累积和的计算顺序为从左到右,每个位置的值为前面所有非 null 元素的和。 +- 空数组返回空数组,NULL 数组返回 NULL,只有一个元素的数组返回原数组。 +- 嵌套数组、MAP、STRUCT 等复杂类型不支持累积和,调用会报错。 +- 对数组元素中的 null 值:null 元素不参与累积和计算,结果对应位置为 null Review Comment: [1,null,2] [1,1,3] [1,null,null] [1,null,3] sum -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
