LAG LEAD FIRST_VALUE LAST_VALUE详细例子

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;

猜你喜欢

转载自blog.csdn.net/weixin_39568073/article/details/121356541
今日推荐