eldenmoon commented on code in PR #2845: URL: https://github.com/apache/doris-website/pull/2845#discussion_r2324370733
########## i18n/zh-CN/docusaurus-plugin-content-docs/current/sql-manual/sql-functions/scalar-functions/array-functions/array-sortby.md: ########## @@ -5,87 +5,44 @@ } --- -## 描述 +## 功能 -首先将 key 列升序排列,然后将 src 列按此顺序排序后的对应列做为结果返回; -如果输入数组 src 为 NULL,则返回 NULL。 -如果输入数组 key 为 NULL,则直接返回 src 数组。 -如果输入数组 key 元素包含 NULL, 则输出的排序数组会将 NULL 放在最前面。 +依据 `key数组`的顺序对 `value数组`进行排序。 +- 例如 `key数组` 是 `[3, 0, 2]`, `value数组` 是 `[5, 7, 8]`,排序后的 `key数组` 是 `[0, 2, 3]`,对应的 `value数组` 是 `[7, 8, 5]`。 ## 语法 -```sql -ARRAY_SORTBY(<src>, <key>) -ARRAY_SORTBY(<lambda>, <arr> [, ...]) -``` +- `ARRAY_SORTBY(values, keys)` +- `ARRAY_SORTBY(lambda, values)` +- `ARRAY_SORTBY(lambda, values)` 相当于 `ARRAY_SORTBY(values, ARRAY_MAP(lambda, values))` ## 参数 -| 参数 | 说明 | -| --- |---| -| `<lambda>` | lambda 表达式,表达式中输入的参数为 1 个或多个,必须和后面的输入 array 列数量一致。在 lambda 中可以执行合法的标量函数,不支持聚合函数等。 | -| `<arr>` | ARRAY 数组 | +- `values`:`ARRAY<T>`,要排序的 value 数组,`T`只支持:数值,布尔,字符串,时间日期,IP 等类型。 +- `keys`:`ARRAY<T>`,与 `arr` 等长的 key 数组,`T`只支持:数值,布尔,字符串,时间日期,IP 等类型。 +- `lambda`: `lambda` 表达式作用于 `values`, 产生 `key 数组`,利用产生的 `key 数组` 进行排序。 ## 返回值 -返回一个排序后的 ARRAY 类型的结果 +- 返回与 `values` 同类型的 `ARRAY<T>`。 +- 当某行 `arr` 与 `keys` 的元素个数不等时报错。 -## 举例 +## 使用说明 -```sql -select array_sortby(['a','b','c'],[3,2,1]); -``` +- 排序稳定性:以`keys`的升序重排 `values`,`keys`中相等键的相对次序未定义。 +- 高阶调用会先用 `ARRAY_MAP` 计算`keys`,再按`keys`对 `values` 排序。 Review Comment: 这里得提一下,因为前面都是这样做的,说明NULL的特殊性 -- 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]
