メインコンテンツまでスキップ
に最終更新

ANY_VALUE

説明​

グループ内の式または列から任意の値を返します。NULL でない値があれば、そのいずれかを返し、なければ NULL を返します。

別名​

  • ANY

構文​

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

パラメータ​

パラメータ説明
<expr>集約する列または式。サポートされる型は String、Date、DateTime、TimestampNs、Timestamptz、IPv4、IPv6、UUID、Bool、TinyInt、SmallInt、Integer、BigInt、LargeInt、Float、Double、Decimal、Array、Map、Struct、AggState、Bitmap、HLL、QuantileState です。

戻り値​

NULL でない値があればそのいずれかを返し、なければ NULL を返します。 戻り値の型は入力 expr の型と同じです。

例​

-- 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;

文字列型: 各グループから 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 でない任意の高精度小数値を返します。

+------+----------------------+
| 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 |
+------+---------------+