zoukankan      html  css  js  c++  java
  • Oracle Partition By 的使用

    1-介绍

    Parttion by 关键字是Oracle中分析性函数的一部分,

    它和聚合函数不同的地方在于它能够返回一个分组中的多条记录,

    而聚合函数一般只有一条反映统计值的结果。

     

    2-使用方法

     

       场景:查询出每个部门工资最低的员工编号【每个部门可能有两个最低的工资员工】  

      

    查询结果:

    2.1方法一

    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 

    2.2方法二

    select * from tsaler 
    inner join(select min(salary) as salary,deptid from tsaler group by deptid) c
    using(salary,deptid)

    2.3方法三

    复制代码
    --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;
    -------方案3解决方案
    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;
    复制代码
  • 相关阅读:
    Shell——2
    Vim-快捷命令
    Shell——1
    linux命令笔记
    小飞机 + zeal 安装
    linux 环境下 假设被cc攻击,请从linux日志文件找出黑客ip地址
    日志文件例子
    最大子列和的四种方法,时间复杂度递减,直至为线性复杂度
    递归很耗内存+多项式求值的两种方法+c语言计时方法
    线代 第六章 二次型
  • 原文地址:https://www.cnblogs.com/turnip/p/11017844.html
Copyright © 2011-2022 走看看