LAST_VALUE
📄字数 679
👁️阅读量 加载中...
功能描述
获取有序结果集中的最后一个值。
语法格式
sql
LAST_VALUE(expr1) OVER ([analytic_clause])
输入参数
expr1
:列名或表达式,用来指定输入数据。OVER ([analytic_clause])
:可选的分析子句,支持分组子句,排序子句以及范围子句,详情见analytic_clause。
输出结果
INTEGER
数值类型,任意参数为 NULL
时,输出参数为 NULL
。
示例
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 |
+-------+--------+--------+------+-------+