Mengembalikan rekaman non-null pertama dari aliran data.
Sintaksis
FIRST_VALUE( T value )
FIRST_VALUE( T value, BIGINT order )Argumen
Argumen | Tipe data | Deskripsi |
value | Tipe data apa pun | Sebuah aliran data. null
|
order | BIGINT | Rekaman non-null dengan nilai urutan terkecil dianggap sebagai rekaman non-null pertama. |
Contoh
Data uji pada tabel 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
Kode uji
Kode uji 1
Potongan kode ini mengelompokkan data berdasarkan user_id, mengurutkan setiap grup berdasarkan create_time, dan mengembalikan product_id produk pertama dalam setiap grup.
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;Kode uji 2
Potongan kode ini mengelompokkan data berdasarkan product_id, mengurutkan setiap grup berdasarkan create_time, dan mengembalikan user_id pertama untuk setiap produk.
SELECT product_id,FIRST_VALUE( `user_id`, UNIX_TIMESTAMP(create_time)) AS first_product FROM T1 group by product_id;Hasil uji
Hasil uji 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
Hasil uji 2
product_id
first_user
1
user_001
2
user_002
3
user_003
4
user_001
5
user_002