LAST_VALUE
📄字数 797
👁️阅读量 加载中...
功能描述
获取有序结果集中的最后一个值。
语法格式
sql
LAST_VALUE(expr1) OVER ([analytic_clause])输入参数
expr1:列名或表达式,用来指定输入数据。OVER ([analytic_clause]):可选的分析子句,支持分组子句,排序子句以及范围子句,详情见analytic_clause。
输出结果
expr1参数对应的数据类型,任意参数为 NULL 时,输出结果为 NULL。
执行类型
| TYPE | VALUE | 说明 |
|---|---|---|
| NATIVE | 0 | 函数只能在本地计算 |
| VOLATI | 0 | 函数的每次计算值不同 |
| STABLE | 0 | 函数的每次计算值相同 |
| COMPUTE | 0 | 函数支持预计算取值 |
| NOT_CONST | 0 | 函数不支持转常数 |
| HAVE_DEF | 0 | 函数参数有默认值 |
示例
sql
-- 建表并插入数据
SQL> CREATE TABLE emp (
empno INT PRIMARY KEY,
ename VARCHAR(10),
deptno INT,
sal DECIMAL(10,2),
hiredate DATE
);
SQL> INSERT INTO emp VALUES
(7369, 'SMITH', 20, 800, '1980-12-17'),
(7499, 'ALLEN', 30, 1600, '1981-02-20'),
(7521, 'WARD', 30, 1250, '1981-02-22'),
(7566, 'JONES', 20, 2975, '1981-04-02'),
(7654, 'MARTIN', 30, 1250, '1981-09-28');
-- 统计窗口内排序后的最后一个值。
SQL> SELECT empno, ename, deptno, sal, LAST_VALUE(sal) OVER ( PARTITION BY deptno ORDER BY sal ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM emp;
+-------+--------+--------+------+-------+
| EMPNO | ENAME | DEPTNO | SAL | EXPR1 |
+-------+--------+--------+------+-------+
| 7369 | SMITH | 20 | 800 | 2975 |
| 7566 | JONES | 20 | 2975 | 2975 |
| 7521 | WARD | 30 | 1250 | 1600 |
| 7654 | MARTIN | 30 | 1250 | 1600 |
| 7499 | ALLEN | 30 | 1600 | 1600 |
+-------+--------+--------+------+-------+