博客
关于我
oracle下的OVER(PARTITION BY)函数介绍
阅读量:796 次
发布时间:2023-02-25

本文共 3168 字,大约阅读时间需要 10 分钟。

Oracle OVER??????

?Oracle?????OVER?????????????????????????????????????Partition By??????????Order By????????????????OVER???????????????????????????????


1. OVER???????

OVER??????????

SELECT column_name,        sum(column_name) OVER(partition_by_clause order_by_clause) FROM table_name;

??

SELECT name, class, s,        sum(s) OVER(partition_by class order_by s desc) mm FROM t2WHERE mm = 1;

??

name class s mm
dss 1 95 190
ffd 1 95 190
gds 2 92 92
cfe 2 74 166
gf 3 99 198
ddd 3 99 198
3dd 3 78 276
asdf 3 55 331
asdf 3 45 376

2. Partition By?Order By???

OVER???????Partition By?Order By????Partition By???????????????Order By????????????????

??1?Partition By deptno Order By salary

SELECT deptno, ename, sal,        rank() OVER(partition_by deptno order_by sal) r,       (SELECT COUNT(1) n FROM emp GROUP BY deptno) bFROM empWHERE deptno IN (30, 60);

??2?Partition By class Order By s desc

SELECT class, s,        rank() OVER(partition_by class order_by s desc) mm FROM t2WHERE mm = 1;

3. Range?Rows???

OVER????Range?Rows???????????Range?????????Rows????N??

???Range between 5 preceding and 5 following

SELECT name, class, s,        sum(s) OVER(order_by s range between 5 preceding and 5 following) mm FROM t2WHERE mm = 1;

???Rows between 2 preceding and 2 following

SELECT name, class, s,        sum(s) OVER(order_by s rows between 2 preceding and 2 following) mm FROM t2WHERE mm = 1;

4. Unbounded Preceding and Following

?Range?Rows???unbounded????????????????

???Unbounded preceding and following

SELECT opr_id, res_type,        first_value(res_type) OVER(partition_by opr_id order_by res_type) low,       last_value(res_type) OVER(partition_by opr_id order_by res_type rows BETWEEN unbounded preceding AND unbounded following) highFROM rm_circuit_routeWHERE opr_id IN ('000100190000000000021311', '000100190000000000021355', '000100190000000000021339')ORDER BY opr_id;

5. rank()?dense_rank()?percent_rank()

rank()

rank()????????????????????????

dense_rank()

dense_rank()???rank()????????????????

percent_rank()

percent_rank()????????????????????

???percent_rank

SELECT deptno, ename, sal,        (a.r-1)/(n-1) pr1,       percent_rank() OVER(partition_by deptno order_by sal) pr2FROM (    SELECT deptno, ename, sal,            rank() OVER(partition_by deptno order_by sal) r    FROM emp    WHERE deptno IN (30, 60)) a,(SELECT deptno, COUNT(1) n FROM emp GROUP BY deptno) bWHERE a.deptno = b.deptno;

6. cume_dist()?percentile_cont()

cume_dist()

cume_dist()?????????????CDF???????????????????

percentile_cont()

percentile_cont()??????????????????

???percentile_cont(0.7)

SELECT ename, sal, deptno,        percentile_cont(0.7) within group(order_by sal) over(partition_by deptno) "Percentile_Cont",       percent_rank() OVER(partition_by deptno order_by sal) "Percent_Rank"FROM empWHERE deptno IN (30, 60);

7. PERCENTILE_DISC()

PERCENTILE_DISC()????????????????

???

SELECT ename, sal, deptno,        percentile_disc(0.7) within group(order_by sal) over(partition_by deptno) "Percentile_Disc",       cume_dist() over(partition_by deptno order_by sal) "Cume_Dist"FROM empWHERE deptno IN (30, 60);

???????????Oracle?OVER??????????????????????????????????????????????????

转载地址:http://qopfk.baihongyu.com/

你可能感兴趣的文章
Oracle监听配置、数据库实例配置等
查看>>
Oracle系列:安装Oracle RAC数据库(二)
查看>>
oracle系统 介绍,ORACLE数据库管理系统介绍
查看>>
oracle获取数据库表、字段、注释、约束等
查看>>
Oracle计划将ZGC项目提交给OpenJDK
查看>>
Oracle闪回技术(Flashback)
查看>>
oracle零碎要点---ip地址问题,服务问题,系统默认密码问题
查看>>
oracle零碎要点---oracle em的web访问地址忘了
查看>>
Oracle零碎要点---多表联合查询,收集数据库基本资料
查看>>
Oracle静默安装
查看>>
Oracle面试题:Oracle中truncate和delete的区别
查看>>
ThreadLocal线程内部存储类
查看>>
thinkphp 常用SQL执行语句总结
查看>>
Oracle:ORA-00911: 无效字符
查看>>
Text-to-Image with Diffusion models的巅峰之作:深入解读 DALL·E 2
查看>>
TCP基本入门-简单认识一下什么是TCP
查看>>
tableviewcell 中使用autolayout自适应高度
查看>>
Orcale表被锁
查看>>
svn访问报错500
查看>>
org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned
查看>>