FIRST_VALUE
更新时间:2025-10-16
描述
FIRST_VALUE() 是一个窗口函数,用于返回窗口分区中有序数据集的第一个值。可以通过 IGNORE NULLS 选项来控制是否忽略空值。
语法
SQL
1FIRST_VALUE(<expr>[, <ignore_null>])
参数
| 参数 | 说明 |
|---|---|
| expr | 需要获取第一个值的表达式 |
| ignore_null | 可选。参数 ignore_null 默认值为 false, 设置后会忽略空值 |
返回值
返回与输入表达式相同的数据类型。
举例
SQL
1WITH example_data AS (
2 SELECT 1 as column1, NULL as column2, 'A' as group_name
3 UNION ALL
4 SELECT 1, 10, 'A'
5 UNION ALL
6 SELECT 1, NULL, 'A'
7 UNION ALL
8 SELECT 1, 20, 'A'
9 UNION ALL
10 SELECT 2, NULL, 'B'
11 UNION ALL
12 SELECT 2, 30, 'B'
13 UNION ALL
14 SELECT 2, 40, 'B'
15)
16SELECT
17 group_name,
18 column1,
19 column2,
20 FIRST_VALUE(column2) OVER (
21 PARTITION BY column1
22 ORDER BY column2 NULLS LAST
23 ) AS first_value_default,
24 FIRST_VALUE(column2, true) OVER (
25 PARTITION BY column1
26 ORDER BY column2
27 ) AS first_value_ignore_null
28FROM example_data
29ORDER BY column1, column2;
Text
1+------------+---------+---------+---------------------+-------------------------+
2| group_name | column1 | column2 | first_value_default | first_value_ignore_null |
3+------------+---------+---------+---------------------+-------------------------+
4| A | 1 | NULL | 10 | NULL |
5| A | 1 | NULL | 10 | NULL |
6| A | 1 | 10 | 10 | 10 |
7| A | 1 | 20 | 10 | 10 |
8| B | 2 | NULL | 30 | NULL |
9| B | 2 | 30 | 30 | 30 |
10| B | 2 | 40 | 30 | 30 |
11+------------+---------+---------+---------------------+-------------------------+
