跳到主要内容
版本:Candidate-4.1

array_top_n

对给定数组的元素按自然降序排序,并返回数组中的前 n 个元素。如果 n 大于输入数组的长度,则返回数组的长度将与输入相同,而不是 n。

语法

array_top_n(array, count)

参数

  • array:要从中提取前 n 个元素的数组。该数组可以包含 StarRocks 支持的任何可比较数据类型的元素。

  • count:要返回的前 n 个元素的数量。必须是非负整数。

返回值

返回一个包含输入数组中前 n 个元素的数组,按降序排序。返回值与输入数组的数据类型都是相同的 ARRAY 类型。

使用说明

  • 元素根据其自然顺序按降序排序。
  • 如果 count 为 0 或负数,则返回空数组。
  • 如果 count 大于数组长度,则返回整个数组,按降序排序。
  • 如果输入的 arraycount 为 NULL,则结果为 NULL。
  • 数组中的 NULL 元素被视为比任何非 NULL 值小,如果包含在结果中,将出现在末尾。

示例

示例 1:从整数数组中获取前 3 个元素。

mysql> SELECT array_top_n([1, 100, 2, 5, 3], 3);
+-----------------------------------+
| array_top_n([1,100,2,5,3], 3) |
+-----------------------------------+
| [100,5,3] |
+-----------------------------------+

示例 2:从包含两个整数的数组中获取前 5 个元素(count 大于数组长度)。

mysql> SELECT array_top_n([1, 100], 5);
+--------------------------+
| array_top_n([1,100], 5) |
+--------------------------+
| [100,1] |
+--------------------------+

示例 3:从字符串数组中获取前 3 个元素。

mysql> SELECT array_top_n(['a', 'zzz', 'zz', 'b', 'g', 'f'], 3);
+----------------------------------------------------+
| array_top_n(['a','zzz','zz','b','g','f'], 3) |
+----------------------------------------------------+
| ['zzz','zz','g'] |
+----------------------------------------------------+

示例 4:当 count 为 0 时调用函数。

mysql> SELECT array_top_n([1, 2, 3], 0);
+--------------------------+
| array_top_n([1,2,3], 0) |
+--------------------------+
| [] |
+--------------------------+

示例 5:从包含 NULL 元素的整数数组中获取前 3 个元素。

mysql> SELECT array_top_n([1, NULL, 3, 2], 3);
+---------------------------------+
| array_top_n([1,null,3,2], 3) |
+---------------------------------+
| [3,2,1] |
+---------------------------------+

示例 6:使用表数据调用函数。

mysql> CREATE TABLE IF NOT EXISTS test (id INT, arr ARRAY<INT>) PROPERTIES ("replication_num"="1");
mysql> INSERT INTO test VALUES (1, [5, 2, 8, 1, 9]), (2, [10, 3, 7]);
mysql> SELECT id, array_top_n(arr, 2) FROM test;
+------+----------------------+
| id | array_top_n(arr, 2) |
+------+----------------------+
| 1 | [9,8] |
| 2 | [10,7] |
+------+----------------------+
Rocky the happy otterStarRocks Assistant

AI generated answers are based on docs and other sources. Please test answers in non-production environments.