メインコンテンツまでスキップ
バージョン: 26.x

ARRAY_PRODUCT

array_product

説明

配列内のすべての要素の積を計算します。この関数は配列内のすべての要素を反復処理し、それらを掛け合わせて結果を返します。

構文

array_product(ARRAY<T> arr)

パラメータ

  • arr:ARRAY型、積を計算する配列

Tでサポートされている型:

  • 数値型: TINYINT, SMALLINT, INT, BIGINT, LARGEINT, FLOAT, DOUBLE, DECIMAL
  • ブール型: BOOLEAN (trueは1に変換、falseは0に変換)

戻り値

戻り値の型: DOUBLEまたはDECIMAL

戻り値の意味:

  • 配列内のすべての要素の積を返す
  • NULL: 配列が空の場合、配列がNULLの場合、またはすべての要素がNULLの場合

使用上の注意:

  • この関数は配列内のNULL値をスキップし、NULL以外の要素のみの積を計算する
  • 配列内のすべての要素がNULLの場合、NULLを返す
  • 空の配列はNULLを返す
  • 複合型(MAP、STRUCT、ARRAY)は積の計算をサポートしておらず、エラーが発生する
  • 配列要素内のnull値について: null要素は積の計算に参加しない

クエリ例:

整数配列の積を計算する:

SELECT array_product([1, 2, 3, 4, 5]);
+--------------------------------+
| array_product([1, 2, 3, 4, 5]) |
+--------------------------------+
| 120 |
+--------------------------------+

float配列の積を計算する:

SELECT array_product([1.1, 2.2, 3.3, 4.4, 5.5]);
+------------------------------------------+
| array_product([1.1, 2.2, 3.3, 4.4, 5.5]) |
+------------------------------------------+
| 190.8 |
+------------------------------------------+

null値を含む配列の積を計算する:

SELECT array_product([1, null, 3, null, 5]);
+----------------------------------------+
| array_product([1, null, 3, null, 5]) |
+----------------------------------------+
| 15.0 |
+----------------------------------------+

ブール配列の積を計算します(true=1、false=0):

SELECT array_product([true, false, true, true]);
+------------------------------------------+
| array_product([true, false, true, true]) |
+------------------------------------------+
| 0 |
+------------------------------------------+

空の配列はNULLを返します:

SELECT array_product([]);
+----------------------+
| array_product([]) |
+----------------------+
| NULL |
+----------------------+

全てがnull要素の配列はNULLを返します:

SELECT array_product([null, null, null]);
+----------------------------------+
| array_product([null, null, null]) |
+----------------------------------+
| NULL |
+----------------------------------+

複合型の例:

ネストされた配列型はサポートされておらず、エラーが発生します:

SELECT array_product([[1,2],[3,4],[5,6]]);
ERROR 1105 (HY000): errCode = 2, detailMessage: array_product does not support type: ARRAY<ARRAY<TINYINT>>

Map型はサポートされておらず、エラーが発生します:

SELECT array_product([{'k':1},{'k':2},{'k':3}]);
ERROR 1105 (HY000): errCode = 2, detailMessage: array_product does not support type: ARRAY<MAP<VARCHAR(1),TINYINT>>

パラメータ数が間違っている場合のエラー:

SELECT array_product([1,2,3], [4,5,6]);
ERROR 1105 (HY000): errCode = 2, detailMessage: Can not found function 'array_product' which has 2 arity. Candidate functions are: [array_product(Expression)]

非配列型を渡した場合のエラー:

SELECT array_product('not_an_array');
ERROR 1105 (HY000): errCode = 2, detailMessage: Can not find the compatibility function signature: array_product(VARCHAR(12))

Keywords

ARRAY, PRODUCT, ARRAY_PRODUCT