云数据库 GAUSSDB-窗口函数:LAST_VALUE()

时间:2025-06-03 09:33:24

LAST_VALUE()

描述:LAST_VALUE函数获取各组内的最后一个值作为返回结果。

返回值类型:与参数数据类型相同。

语法:

LAST_VALUE(value any)
LAST_VALUE(value any IGNORE|RESPECT NULLS)
LAST_VALUE(value any) IGNORE|RESPECT NULLS

IGNORE|RESPECT NULLS:表示是否要忽略NULL值。其中RESPECT NULLS是缺省值。若开启IGNORE NULLS选项,当查询到的组内最后一个值是NULL时,会继续向前查询,直到查询到一个非NULL值时进行返回;如果一直向前查询到当前组的开头仍是NULL值,则返回NULL。

示例1:不开启IGNORE NULLS,默认不忽略NULL值。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
gaussdb=# CREATE TABLE last_value_t1(a int, b int);

gaussdb=# INSERT INTO last_value_t1 VALUES(1, NULL),(1,1),(1,1),(1, 2),(1, 3),(2, 4),(2, 5),(3,6);

gaussdb=# SELECT a,b,LAST_VALUE(b) OVER(PARTITION BY a ORDER BY b) FROM last_value_t1;
 a | b | last_value 
---+---+------------
 1 | 1 |          1
 1 | 1 |          1
 1 | 2 |          2
 1 | 3 |          3
 1 |   |           
 2 | 4 |          4
 2 | 5 |          5
 3 | 6 |          6
(8 rows)
gaussdb=# DROP TABLE last_value_t1;

示例2:开启IGNORE NULLS。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
gaussdb=# CREATE TABLE last_value_t1(a int, b int);

gaussdb=# INSERT INTO last_value_t1 VALUES(1, NULL),(1,1),(1,1),(1, 2),(1, 3),(2, 4),(2, 5),(3,6);

gaussdb=# SELECT a,b,LAST_VALUE(b) IGNORE NULLS OVER(PARTITION BY a ORDER BY b) FROM last_value_t1;
 a | b | last_value 
---+---+------------
 1 | 1 |          1
 1 | 1 |          1
 1 | 2 |          2
 1 | 3 |          3
 1 |   |          3
 2 | 4 |          4
 2 | 5 |          5
 3 | 6 |          6
(8 rows)

gaussdb=# DROP TABLE last_value_t1;
support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0374.html