云数据库 GAUSSDB-窗口函数:LAST_VALUE()
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; |