zoukankan      html  css  js  c++  java
  • 分析函数

    员工表查询:

    1:查询每个部门的工资按工资排序;

    1 select 
    2 SAL 工资,
    3 DEPTNO 部门,
    4 ENAME 姓名,
    5 ROW_NUMBER() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) 工资在本部门排序
    6  from EMP

     2:分组的时候 PARTITION BY 后面可以跟多个条件。

    3:求每个部门工资最高的信息

    select * from (SELECT ENAME,SAL,DEPTNO,RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) MM FROM EMP) WHERE MM=1

    小知识:用rank()不用ROW_NUMBER()的原因是:因为如果同班有两个并列第一,row_number()只返回一个结果

    2.rank()和dense_rank()的区别是: 

          --rank()是跳跃排序,有两个第二名时接下来就是第四名 
          --dense_rank()l是连续排序,有两个第二名时仍然跟着第三名 
      
    SELECT DEPTNO,
                  dense_rank() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) RW,
                  ENAME,
                  SAL
                  FROM EMP
                  WHERE DEPTNO='30'

    SELECT DEPTNO,
                  rank() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) RW,
                  ENAME,
                  SAL
                  FROM EMP
                  WHERE DEPTNO='30'

    SELECT DEPTNO,
                  ROW_NUMBER() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) RW,
                  ENAME,
                  SAL
                  FROM EMP
                  WHERE DEPTNO='30'

    4:求个人在本部门的工资百分比
    select ENAME,DEPTNO,sal,sal*100/sum(sal) over(partition by DEPTNO) percent from EMP WHERE ENAME='ALLEN';  

    select ENAME,DEPTNO,sal,sal*100/sum(sal) over(partition by DEPTNO) percent from EMP;  

     5:lag()与lead():求之前或之后的第N行
    lag和lead函数可以在一次查询中取出同一字段的前n行的数据和后n行的值。这种操作可以使用对相同表的表连接来实现,不过使用lag和lead有更高的效率。
    lag(arg1,arg2,arg3)
    第一个参数是列名,
    第二个参数是偏移的offset,
    第三个参数是超出记录窗口时的默认值。

    select  ENAME,SAL,lag(ENAME,4,0) OVER(ORDER BY SAL) FROM EMP;

    select  ENAME,SAL,lead(ENAME,4,0) OVER(ORDER BY SAL) FROM EMP;

  • 相关阅读:
    P1265 公路修建 最小生成树
    P1991 无线通讯网 最小生成树
    Stock Chase 拓扑
    Rank of Tetris 拓扑排序+并查集
    P1169 [ZJOI2007]棋盘制作 DP悬线法
    P4147 玉蟾宫 二维DP 悬线法
    P1341 无序字母对 欧拉回路
    P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 记忆化搜索dfs
    BSTestRunner插件的用法.py
    Selenium
  • 原文地址:https://www.cnblogs.com/bulrush/p/7591442.html
Copyright © 2011-2022 走看看