zoukankan      html  css  js  c++  java
  • Oracle高级查询之OVER (PARTITION BY ..)

    一、rank()/dense_rank() over(partition by ...order by ...)

    查询每个部门工资最高的雇员的信息:

    1. select e.ename, e.job, e.sal, e.deptno 
      from scott.emp e, 
           (select e.deptno, max(e.sal) sal from scott.emp e group by e.deptno) me 
     where e.deptno = me.deptno 
       and e.sal = me.sal; 

     2. 使用 rank() over(partition by...)或dense_rank() over(partition by...)语法

    select e.ename, e.job, e.sal, e.deptno 
      from (select e.ename, 
                   e.job, 
                   e.sal, 
                   e.deptno, 
                   rank() over(partition by e.deptno order by e.sal desc) rank 
              from scott.emp e) e 
     where e.rank = 1;

     select e.ename, e.job, e.sal, e.deptno 
      from (select e.ename, 
                   e.job, 
                   e.sal, 
                   e.deptno, 
                   dense_rank() over(partition by e.deptno order by e.sal desc) rank 
              from scott.emp e) e 
     where e.rank = 1; 

    这里补充讲解一下rank()/dense_rank() over(partition by e.deptno order by e.sal desc)语法。
    over:  在什么条件之上。
    partition by e.deptno:  按部门编号划分(分区)。
    order by e.sal desc:  按工资从高到低排序(使用rank()/dense_rank() 时,必须要带order by否则非法)
    rank()/dense_rank():  分级
    整个语句的意思就是:在按部门划分的基础上,按工资从高到低对雇员进行分级,“级别”由从小到大的数字表示(最小值一定为1)。 

    那么rank()和dense_rank()有什么区别呢?
    rank():  跳跃排序,如果有两个第一级时,接下来就是第三级。
    dense_rank():  连续排序,如果有两个第一级时,接下来仍然是第二级。

    下面再列举一些常用的方法在该语法中的应用(注:带order by子句的方法说明在使用该方法的时候必须要带order by):

    select e.ename, 
           e.job, 
           e.sal, 
           e.deptno, 
           first_value(e.sal) over(partition by e.deptno) first_sal, 
           last_value(e.sal) over(partition by e.deptno) last_sal, 
           sum(e.sal) over(partition by e.deptno) sum_sal, 
           avg(e.sal) over(partition by e.deptno) avg_sal, 
           count(e.sal) over(partition by e.deptno) count_num, 
           row_number() over(partition by e.deptno order by e.sal) row_num 
      from scott.emp e; 


     

  • 相关阅读:
    深度学习遥感影像(哨兵2A/B)超分辨率
    基于Google Earth Engine的全国地表温度反演
    蚂蚁森林的树木长得如何了?遥感云计算告诉你!!
    基于单分类器的高分辨率遥感影像道路提取
    基于google earth engine 云计算平台的全国水体变化研究
    超大影像栅格转矢量快速实现
    大规模深度学习多通道遥感图像样本增强
    大规模遥感影像匀光匀色的一些思考
    基于深度学习的珠海一号高光谱影像云检测
    全自动多源遥感影像大气校正方法
  • 原文地址:https://www.cnblogs.com/changxr/p/5105972.html
Copyright © 2011-2022 走看看