zoukankan      html  css  js  c++  java
  • Oracle Partition By

    /*
    Parttion by 关键字是Oracle中分析性函数的一部分,
    它和聚合函数不同的地方在于它能够返回一个分组中的多条记录,
    而聚合函数一般只有一条反映统计值的结果。
    */
    
    --示例查询出每个部门工资最低的员工编号【每个部门可能有多个最低的工资员工】  
    create table tsaler(
    userid varchar(10),
    salary number,
    deptid varchar(1)
    );
    
    insert into tsaler(userid, salary, deptid) values('1', '200', '1');
    insert into tsaler(userid, salary, deptid) values('2', '2000', '1');
    insert into tsaler(userid, salary, deptid) values('3', '200', '1');
    insert into tsaler(userid, salary, deptid) values('4', '1000', '2');
    insert into tsaler(userid, salary, deptid) values('5', '1000', '2');
    insert into tsaler(userid, salary, deptid) values('6', '3000', '2');
    commit;
    
    --方法一
    select tsaler.*
      from tsaler
     inner join (select min(salary) as salary, deptid
                   from tsaler
                  group by deptid) c
        on tsaler.salary = c.salary
       and tsaler.deptid = c.deptid;
       
    --方法二
    select *
      from tsaler
     inner join (select min(salary) as salary, deptid
                   from tsaler
                  group by deptid) c
     using (salary, deptid);
       
    --方法三
    --row_number() 顺序排序
    select row_number() over(partition by deptid order by salary) my_rank ,deptid,USERID,salary from tsaler;
    --rank() (跳跃排序,如果有两个第一级别时,接下来是第三级别)
    select rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler;
    --dense_rank()(连续排序,如果有两个第一级别时,接下来是第二级)
    select dense_rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler;
    
    --
    select *
     from (select       rank() over(partition by deptid order by salary) my_rank,
                  deptid,
                  USERID,
                  salary
             from tsaler)
    where my_rank = 1;
    --
    select *
      from (select dense_rank() over(partition by deptid order by salary) my_rank,
                   deptid,
                   USERID,
                   salary
              from tsaler)
     where my_rank = 1;
  • 相关阅读:
    dapperHelper
    .NET Core Session的使用方法
    Wpf 关闭当前窗体 打开新窗体
    C#中Split分隔字符串的应用(C#、split、分隔、字符串)
    wpf日期控件
    SQLite数据库数据类型详解
    Asp.Net Core 2.2
    手写图片懒加载
    css动画常用属性总结
    css购物车(抛物线)运动
  • 原文地址:https://www.cnblogs.com/wangrui1587165/p/13141760.html
Copyright © 2011-2022 走看看