查询各部门中薪水分布处于25%、50%、75%位置的人的薪水,percent_rank()是确定排行中的相对位置。

create table EMP
(
  EMPNO    NUMBER(4) not null,
  ENAME    VARCHAR2(10),
  JOB      VARCHAR2(9),
  MGR      NUMBER(4),
  HIREDATE DATE,
  SAL      NUMBER(7,2),
  COMM     NUMBER(7,2),
  DEPTNO   NUMBER(2)
);
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7369, 'SMITH', 'CLERK', 7902, to_date('17-12-1980', 'dd-mm-yyyy'), 800.00, null, 20);
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7499, 'ALLEN', 'SALESMAN', 7698, to_date('20-02-1981', 'dd-mm-yyyy'), 1600.00, 300.00, 30);
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7521, 'WARD', 'SALESMAN', 7698, to_date('22-02-1981', 'dd-mm-yyyy'), 1250.00, 500.00, 30);
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7566, 'JONES', 'MANAGER', 7839, to_date('02-04-1981', 'dd-mm-yyyy'), 2975.00, null, 20);
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7654, 'MARTIN', 'SALESMAN', 7698, to_date('28-09-1981', 'dd-mm-yyyy'), 1250.00, 1400.00, 30);
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7698, 'BLAKE', 'MANAGER', 7839, to_date('01-05-1981', 'dd-mm-yyyy'), 2850.00, null, 30);
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7782, 'CLARK', 'MANAGER', 7839, to_date('09-06-1981', 'dd-mm-yyyy'), 2450.00, null, 10);
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7788, 'SCOTT', 'ANALYST', 7566, to_date('19-04-1987', 'dd-mm-yyyy'), 3000.00, null, 20);
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7839, 'KING', 'PRESIDENT', null, to_date('17-11-1981', 'dd-mm-yyyy'), 5000.00, null, 10);
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7844, 'TURNER', 'SALESMAN', 7698, to_date('08-09-1981', 'dd-mm-yyyy'), 1500.00, 0.00, 30);
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7876, 'ADAMS', 'CLERK', 7788, to_date('23-05-1987', 'dd-mm-yyyy'), 1100.00, null, 20);
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7900, 'JAMES', 'CLERK', 7698, to_date('03-12-1981', 'dd-mm-yyyy'), 950.00, null, 30);
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7902, 'FORD', 'ANALYST', 7566, to_date('03-12-1981', 'dd-mm-yyyy'), 3000.00, null, 20);
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7934, 'MILLER', 'CLERK', 7782, to_date('23-01-1982', 'dd-mm-yyyy'), 1300.00, null, 10);
commit;

SQL> select e.ename,e.sal,e.deptno,

percent_rank() over(partition by deptno order by sal desc) p_rank,
       PERCENTILE_CONT(0) within group(order by sal desc)
        over(partition by deptno) max_sal ,
       PERCENTILE_CONT(0.25) within group(order by sal desc)
        over(partition by deptno) max_sal_25,
       PERCENTILE_CONT(0.5) within group(order by sal desc)
        over(partition by deptno) max_sal_50,
       PERCENTILE_CONT(0.75) within group(order by sal desc)
        over(partition by deptno) max_sal_75
    from emp e;
ENAME             SAL     DEPTNO     P_RANK    MAX_SAL MAX_SAL_25 MAX_SAL_50 MAX_SAL_75
---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
KING             5000         10          0       5000       3725       2450       1875
CLARK            2450         10         .5       5000       3725       2450       1875
MILLER           1300         10          1       5000       3725       2450       1875
SCOTT            3000         20          0       3000       3000       2975       1100
FORD             3000         20          0       3000       3000       2975       1100
JONES            2975         20         .5       3000       3000       2975       1100
ADAMS            1100         20        .75       3000       3000       2975       1100
SMITH             800         20          1       3000       3000       2975       1100
BLAKE            2850         30          0       2850       1575       1375       1250
ALLEN            1600         30         .2       2850       1575       1375       1250
TURNER           1500         30         .4       2850       1575       1375       1250
WARD             1250         30         .6       2850       1575       1375       1250
MARTIN           1250         30         .6       2850       1575       1375       1250
JAMES             950         30          1       2850       1575       1375       1250
已选择14行。

SQL> select e.ename,e.sal,e.deptno,
         percent_rank() over(partition by deptno order by sal) p_rank,
         PERCENTILE_CONT(0) within group(order by sal)
          over(partition by deptno) max_sal ,
         PERCENTILE_CONT(0.25) within group(order by sal)
          over(partition by deptno) max_sal_25,
         PERCENTILE_CONT(0.5) within group(order by sal)
          over(partition by deptno) max_sal_50,
         PERCENTILE_CONT(0.75) within group(order by sal)
          over(partition by deptno) max_sal_75
      from emp e;
ENAME             SAL     DEPTNO     P_RANK    MAX_SAL MAX_SAL_25 MAX_SAL_50 MAX_SAL_75
---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
MILLER           1300         10          0       1300       1875       2450       3725
CLARK            2450         10         .5       1300       1875       2450       3725
KING             5000         10          1       1300       1875       2450       3725
SMITH             800         20          0        800       1100       2975       3000
ADAMS            1100         20        .25        800       1100       2975       3000
JONES            2975         20         .5        800       1100       2975       3000
SCOTT            3000         20        .75        800       1100       2975       3000
FORD             3000         20        .75        800       1100       2975       3000
JAMES             950         30          0        950       1250       1375       1575
MARTIN           1250         30         .2        950       1250       1375       1575
WARD             1250         30         .2        950       1250       1375       1575
TURNER           1500         30         .6        950       1250       1375       1575
ALLEN            1600         30         .8        950       1250       1375       1575
BLAKE            2850         30          1        950       1250       1375       1575
已选择14行。

Oracle分析函数PERCENTILE_CONT相关推荐

  1. oracle 百分位数,Oracle分析函数PERCENTILE_CONT

    查询各部门中薪水分布处于25%.50%.75%位置的人的薪水,percent_rank()是确定排行中的相对位置. 查询各部门中薪水分布处于25%.50%.75%位置的人的薪水,percent_ran ...

  2. oracle 数据分析函数,ORACLE分析函数(一)

    ORACLE分析函数(1) 分析函数式ORACLE提供的用来进行数据统计的强有力工具,与我们常用的聚合函数具有一些相似性,但又完全不同.聚合函数,首先会将数据进行分组,然后对每一组数据进行运算,如求和 ...

  3. Oracle分析函数巧妙使用

    在 Oracle中使用Sql必须弄懂分析函数 Oracle开发专题之:分析函数(OVER) 1 Oracle开发专题之:分析函数2(Rank, Dense_rank, row_number) 6 Or ...

  4. Oracle分析函数——函数列表

    --------------聚合函数 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算 ...

  5. Oracle分析函数六——数据分布函数及报表函数

    Oracle分析函数--数据分布函数及报表函数 CUME_DIST 功能描述:计算一行在组中的相对位置,CUME_DIST总是返回大于0.小于或等于1的数,该数表示该行在N行中的位置.例如,在一个3行 ...

  6. Oracle分析函数一——函数列表

    Oracle 分析函数 Oracle 分析函数--函数列表 SUM         : 该函数计算组中表达式的累积和 MIN         : 在一个组中的数据窗口中查找表达式的最小值 MAX    ...

  7. Oracle分析函数、多维函数和Model函数简要说明,主要针对BI报表统计

    以下代码均经过测试,可直接运行 Oracle分析函数.多维函数和Model函数简要说明,主要针对BI报表统计,不一定很全面,但对BI应用场景做了少许说明 --创建一张销售数量表,数据趋势是递增的 CR ...

  8. Oracle分析函数使用总结

    Oracle分析函数使用总结 1.使用评级函数 评级函数(ranking function)用于计算等级.百分点.n分片等等,下面是几个常用到的评级函数: RANK():返回数据项在分组中的排名.特点 ...

  9. Oracle分析函数大全

    分析函数又叫开窗函数,OLAP函数等,因为有人问我用过开窗函数没,呵,什么是开窗函数,从来没听过,难道是分析函数么.哈哈,最后还真是分析函数哦!用过的东西别名也应该知道,赶上这么个事,就剽窃一眼Ora ...

最新文章

  1. Linux多任务编程之五:exit()和_exit()函数(转)
  2. (二)企业部分之lnmp环境的搭建:mysql源码安装
  3. 使用级联功能实现蓝绿部署和金丝雀发布
  4. 从 k8s 上卸载 KubeSphere
  5. ReactNative ES6简介 及基本语法第一篇
  6. 电子商务应用课程知识整理 第五章-搜索引擎优化(SEO)
  7. VS2012无法安装cocos2d-x-2.1.4 解决方法及VS2012新建coco2d-x项目(一)
  8. webjs求数组的中位数‘_算法:一道常见的数组题,但很多人却写不出来(JAVA)...
  9. Android逆向笔记-某水果大作战内购破解思路
  10. MFC开发-MFC Edit Control 捕捉回车用法
  11. MFC工作笔记0008---UDP协议通信_sendto 和 recvfrom 浅析与示例
  12. 使用xcode4做ios的国际化
  13. 关于【apache- tomcat- 5.5.15/conf /Catalina/localhost配置虚拟目录】时的一些问题。(配置web项目的方式不止一种,虚拟目录就是一个)
  14. iframe中嵌入报表
  15. 我的VSTO之路(四):深入介绍Word开发
  16. unbuntu基本操作
  17. alist搭建云盘管理程序。
  18. 若依ajax返回数据,若依管理系统RuoYi-Vue(二):权限系统设计详解
  19. 顺序表的基本操作(增删改查)——C语言
  20. C++ 快速学习(一)

热门文章

  1. python uppercase函数_字符串-短rot13函数-Python
  2. socket套接字各个接口
  3. php ajax 考试倒计时,ajax实现在线考试倒计时
  4. 《经济的律动》徐远(作者)epub+mobi+azw3格式下载
  5. 函数参数里*argvs和**kwargs的区别
  6. 福特锐界2021plus保险盒保险丝说明
  7. 山东高速资产注入承诺何时兑现 期待画饼成真
  8. python计算等差数列_python 等差数列末项计算方式
  9. 国科大学习资料--人工智能原理与算法-第一次作业解析(学长整理)
  10. Clear Type之父谈阅读革命(转载)