データストリームの最初の非 NULL レコードを返します。
構文
FIRST_VALUE( T value )
FIRST_VALUE( T value, BIGINT order )引数
引数 | データ型 | 説明 |
value | 任意のデータ型 | データストリーム。 説明
|
order | BIGINT | order 値が最小の非 NULL レコードが、最初の非 NULL レコードと見なされます。 |
例
T1 テーブルのテストデータ
user_id(VARCHAR)
product_id(BIGINT)
create_time(TIMESTAMP)
user_001
1
2023-02-15 10:40:56
user_002
2
2023-02-15 11:40:56
user_003
3
2023-02-15 12:40:56
user_001
4
2023-02-15 13:40:55
user_002
5
2023-02-15 14:40:56
user_001
1
2023-02-15 15:40:56
user_003
4
2023-02-15 16:40:56
テストコード
テストコード 1
このコードスニペットは、user_id でデータをグループ化し、各グループを create_time でソートし、各グループの最初の製品の product_id を返します。
SELECT `user_id`, create_time, product_id, FIRST_VALUE(product_id) OVER (PARTITION BY `user_id` ORDER BY create_time) AS first_product FROM T1;テストコード 2
このコードスニペットは、product_id でデータをグループ化し、各グループを create_time でソートし、各製品の最初の user_id を返します。
SELECT product_id,FIRST_VALUE( `user_id`, UNIX_TIMESTAMP(create_time)) AS first_product FROM T1 group by product_id;テスト結果
テスト結果 1
user_id(VARCHAR)
create_time(TIMESTAMP)
product_id(BIGINT)
first_product(BIGINT)
user_001
2023-02-15 10:40:56
1
1
user_001
2023-02-15 13:40:56
4
1
user_001
2023-02-15 15:40:56
1
1
user_002
2023-02-15 11:40:56
2
2
user_002
2023-02-15 14:40:56
5
2
user_003
2023-02-15 12:40:56
3
3
user_003
2023-02-15 16:40:56
4
3
テスト結果 2
product_id
first_user
1
user_001
2
user_002
3
user_003
4
user_001
5
user_002