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;

  • 相关阅读:
    C#编程总结(三)线程同步 多线程
    配置 Spring.NET
    C# Redis
    WPF MvvmLight RelayCommand 绑定Command 的使用
    WCF编程系列(一)初识WCF
    C#/WPF程序开机自动启动
    C# 创建Windows Service(Windows服务)程序
    前端Js框架汇总
    列式存储和行式存储
    llvm-3.4.2 编译失败 解决方案
  • 原文地址:https://www.cnblogs.com/bulrush/p/7591442.html
Copyright © 2011-2022 走看看