SELECT empno,
ename,
job,
sal
FROM emp
ORDER BY sal;
第一行显示成0
SELECT empno, ename, job, sal,
LAG(sal, 2, 2) OVER (ORDER BY sal) AS 第一行显示成0
FROM emp;
前两行显示2
SELECT empno, ename, job, sal,
LAG(sal, 2, 2) OVER (ORDER BY sal) AS 前2行显示成2
FROM emp;
工资减LAG得到的值
SELECT empno, ename, job, sal,
LAG(sal, 1, 0) OVER (ORDER BY sal) AS 第一行显示成0,
SAL-LAG(sal, 1, 0) OVER (ORDER BY sal) AS 工资减LAG得到的值
FROM emp;
按deptno分组
SELECT empno, ename, deptno,job, sal,
LAG(sal, 1, 0) OVER (PARTITION BY deptno ORDER BY sal) AS 按deptno分组
FROM emp;
最后一行显示成0
SELECT empno, ename, deptno,job, sal,
LEAD(sal, 1, 0) OVER (ORDER BY sal) AS 最后一行显示成0
FROM emp;
减SAL
只显示第一行
SELECT empno, deptno,sal,
FIRST_VALUE(sal) OVER (ORDER BY sal) AS 只显示第一行
FROM emp;
最低工资和其它人工资差距
SELECT empno, deptno,sal,
FIRST_VALUE(sal) OVER (ORDER BY sal) AS 只显示第一行,
sal-FIRST_VALUE(sal) OVER (ORDER BY sal) AS 最低工资和其它人工资差距
FROM emp;
部门分组
SELECT empno, deptno,sal,
FIRST_VALUE(sal) OVER (PARTITION BY deptno ORDER BY sal) AS 部门分组,
FROM emp;
SELECT empno, deptno,sal,
FIRST_VALUE(sal) OVER (PARTITION BY deptno ORDER BY sal) AS 部门最低工资,
FIRST_VALUE(sal) OVER (PARTITION BY deptno ORDER BY sal DESC) AS 部门最高工资
FROM emp;
最后一行
这样是错误的
部门最高工资
SELECT empno, deptno,sal,
LAST_VALUE(sal) IGNORE NULLS
OVER (PARTITION BY deptno ORDER BY sal ROWS BETWEEN
UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS 部门最高工资
FROM emp;
SELECT empno, deptno,sal,
FIRST_VALUE(sal) OVER (PARTITION BY deptno ORDER BY Sal) AS 部门最低工资,
LAST_VALUE(sal) OVER (PARTITION BY deptno ORDER BY Sal
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS 部门最高工资
FROM emp;