メインコンテンツまでスキップ
バージョン: Candidate-4.1

array_top_n

指定された配列の要素を自然な降順でソートし、配列内のトップ n 要素を返します。n が入力配列の長さよりも大きい場合、返される配列の長さは n ではなく入力配列と同じになります。

構文

array_top_n(array, count)

パラメータ

  • array: トップ n 要素を抽出する配列。配列には、StarRocks がサポートする任意の比較可能なデータ型の要素を含めることができます。

  • count: 返すトップ要素の数。非負の整数でなければなりません。

戻り値

入力配列からトップ n 要素を降順でソートして含む配列を返します。戻り値のデータ型は、入力配列と同じ ARRAY 型です。

使用上の注意

  • 要素は、その自然な順序に従って降順でソートされます。
  • count が 0 または負の場合、空の配列が返されます。
  • count が配列サイズより大きい場合、配列全体が降順でソートされて返されます。
  • 入力 array または count が 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: 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.