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

ANY_VALUE

説明

グループ内の式または列から任意の値を返します。NULL以外の値が存在する場合は任意のNULL以外の値を返し、それ以外の場合はNULLを返します。

エイリアス

  • ANY

構文

ANY_VALUE(<expr>)
ANY(<expr>)

パラメータ

Parameterデスクリプション
<expr>集約される列または式。サポートされる型は String、Date、DateTime、IPv4、IPv6、Bool、TinyInt、SmallInt、Integer、BigInt、LargeInt、Float、Double、Decimal、Array、Map、Struct、AggState、Bitmap、HLL、QuantileState です。

Return Value

非NULL値が存在する場合は任意の非NULL値を返し、そうでなければNULLを返します。 戻り値の型は入力exprの型と一致します。

Example

-- setup
create table t1(
k1 int,
k_string varchar(100),
k_decimal decimal(10, 2)
) distributed by hash (k1) buckets 1
properties ("replication_num"="1");
insert into t1 values
(1, 'apple', 10.01),
(1, 'banana', 20.02),
(2, 'orange', 30.03),
(2, null, null),
(3, null, null);
select k1, any_value(k_string) from t1 group by k1;

String型: 各グループについて、NULL以外の値を返します。

+------+---------------------+
| k1 | any_value(k_string) |
+------+---------------------+
| 1 | apple |
| 2 | orange |
| 3 | NULL |
+------+---------------------+
select k1, any_value(k_decimal) from t1 group by k1;

Decimal型:NULL以外の任意の高精度decimal値を返します。

+------+----------------------+
| k1 | any_value(k_decimal) |
+------+----------------------+
| 1 | 10.01 |
| 2 | 30.03 |
| 3 | NULL |
+------+----------------------+
select any_value(k_string) from t1 where k1 = 3;

グループ内のすべての値がNULLの場合、NULLを返します。

+---------------------+
| any_value(k_string) |
+---------------------+
| NULL |
+---------------------+
select k1, any(k_string) from t1 group by k1;

エイリアス ANY を使用すると、ANY_VALUE と同じ効果が得られます。

+------+---------------+
| k1 | any(k_string) |
+------+---------------+
| 1 | apple |
| 2 | orange |
| 3 | NULL |
+------+---------------+