Oracle分析函数PERCENTILE_CONT
查询各部门中薪水分布处于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相关推荐
- oracle 百分位数,Oracle分析函数PERCENTILE_CONT
查询各部门中薪水分布处于25%.50%.75%位置的人的薪水,percent_rank()是确定排行中的相对位置. 查询各部门中薪水分布处于25%.50%.75%位置的人的薪水,percent_ran ...
- oracle 数据分析函数,ORACLE分析函数(一)
ORACLE分析函数(1) 分析函数式ORACLE提供的用来进行数据统计的强有力工具,与我们常用的聚合函数具有一些相似性,但又完全不同.聚合函数,首先会将数据进行分组,然后对每一组数据进行运算,如求和 ...
- Oracle分析函数巧妙使用
在 Oracle中使用Sql必须弄懂分析函数 Oracle开发专题之:分析函数(OVER) 1 Oracle开发专题之:分析函数2(Rank, Dense_rank, row_number) 6 Or ...
- Oracle分析函数——函数列表
--------------聚合函数 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算 ...
- Oracle分析函数六——数据分布函数及报表函数
Oracle分析函数--数据分布函数及报表函数 CUME_DIST 功能描述:计算一行在组中的相对位置,CUME_DIST总是返回大于0.小于或等于1的数,该数表示该行在N行中的位置.例如,在一个3行 ...
- Oracle分析函数一——函数列表
Oracle 分析函数 Oracle 分析函数--函数列表 SUM : 该函数计算组中表达式的累积和 MIN : 在一个组中的数据窗口中查找表达式的最小值 MAX ...
- Oracle分析函数、多维函数和Model函数简要说明,主要针对BI报表统计
以下代码均经过测试,可直接运行 Oracle分析函数.多维函数和Model函数简要说明,主要针对BI报表统计,不一定很全面,但对BI应用场景做了少许说明 --创建一张销售数量表,数据趋势是递增的 CR ...
- Oracle分析函数使用总结
Oracle分析函数使用总结 1.使用评级函数 评级函数(ranking function)用于计算等级.百分点.n分片等等,下面是几个常用到的评级函数: RANK():返回数据项在分组中的排名.特点 ...
- Oracle分析函数大全
分析函数又叫开窗函数,OLAP函数等,因为有人问我用过开窗函数没,呵,什么是开窗函数,从来没听过,难道是分析函数么.哈哈,最后还真是分析函数哦!用过的东西别名也应该知道,赶上这么个事,就剽窃一眼Ora ...
最新文章
- Django web框架-----Django连接现有mysql数据库
- python-range用法
- C++类型转换总结【转】
- 【pytorch】torch.nn.Identity()
- java 字符查找 截断_java字符串常用操作(查找、截取、分割)
- 卖零食靠什么产品引流?零食店怎么做引流?
- php开发人脸识别流程,php使用face++实现一个简单的人脸识别系统
- Vue创建项目的详细步骤
- 低通滤波器转带通滤波器公式由来_无源滤波器应用或电路中的带通滤波器原理...
- Beyond Compare的文档比较工具的设置
- C - One-dimensional Japanese Crossword CodeForces - 721A
- 中国 IM 企业的新机会?揭秘融云全球通信云网络背后的技术 | 对话 WICC
- Fedora的服务详解zz
- 关于Trunk封装的协议和模式。如何配置trunk
- 学习Java可以从事什么工作?
- UML中的九种建模图
- 客户满意度测评模型-层次分析法模型」
- toad创建mysql数据库_利用Toad管理本地数据库
- unity3d游戏2d横版射击游戏完整项目源码分享
- macOS Big Sur:您会喜欢的事情