LEAD
📄字数 798
👁️阅读量 加载中...
功能描述
用于返回结果集中当前行之后指定偏移行的值。
语法格式
sql
LEAD(expr1[ ,expr2[ ,expr3]]) OVER ([analytic_clause])
输入参数
expr1
:列名或表达式,用来指定输入数据。expr2
:INTEGER
类型或者能隐式转换为INTEGER
类型的其他类型的值,用来指定偏移量,取值大于0
,缺省值为1
。expr3
:DOUBLE
、NUMERIC
、INTEGER
类型或者能隐式转换为DOUBLE
、NUMERIC
、INTEGER
类型的其他类型的值,用来指定默认值,缺省时为NULL
。OVER ([analytic_clause])
:可选的分析子句,支持分组子句,排序子句以及范围子句,详情见analytic_clause。
输出结果
返回值的数据类型与 expr1
的类型一致,当参数 expr1
为 NULL
时,输出结果为 NULL
,当指定的偏移超出窗口边界时,返回 default
值。
示例
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, LEAD(sal, 2) OVER (ORDER BY hiredate) FROM emp;
+-------+--------+--------+------+--------+
| EMPNO | ENAME | DEPTNO | SAL | EXPR1 |
+-------+--------+--------+------+--------+
| 7369 | SMITH | 20 | 800 | 1250 |
| 7499 | ALLEN | 30 | 1600 | 2975 |
| 7521 | WARD | 30 | 1250 | 1250 |
| 7566 | JONES | 20 | 2975 | <NULL> |
| 7654 | MARTIN | 30 | 1250 | <NULL> |