oracle统计分析函数集

上传人:第*** 文档编号:32692579 上传时间:2018-02-12 格式:DOC 页数:15 大小:238KB
返回 下载 相关 举报
oracle统计分析函数集_第1页
第1页 / 共15页
oracle统计分析函数集_第2页
第2页 / 共15页
oracle统计分析函数集_第3页
第3页 / 共15页
oracle统计分析函数集_第4页
第4页 / 共15页
oracle统计分析函数集_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《oracle统计分析函数集》由会员分享,可在线阅读,更多相关《oracle统计分析函数集(15页珍藏版)》请在金锄头文库上搜索。

1、Oracle统计分析函数集,over(partition by.) 的运用oracle 的分析函数 over 及开窗函数一:分析函数 overOracle 从 8.1.6 开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。 下面通过几个例子来说明其应用。 1:统计某商店的营业额。 date sale1 202 153 144 185 30规则:按天统计:每天都统计前面几天的总额得到的结果:DATE SALE SUM- - -1 20 20 -1 天 2 15 35 -1 天2 天 3 14 49 -1 天2 天3

2、天 4 18 67 . 5 30 97 .2:统计各班成绩第一名的同学信息NAME CLASS S - - - fda 1 80 ffd 1 78 dss 1 95 cfe 2 74 gds 2 92 gf 3 99 ddd 3 99 adf 3 45 asdf 3 55 3dd 3 78 通过: -select * from ( select name,class,s,rank()over(partition by class order by s desc) mm from t2) where mm=1 -得到结果:NAME CLASS S MM - - - - dss 1 95 1 gd

3、s 2 92 1 gf 3 99 1 ddd 3 99 1 注意:1.在求第一名成绩的时候,不能用 row_number(),因为如果同班有两个并列第一,row_number()只返回一个结果 2.rank()和 dense_rank()的区别是:-rank()是跳跃排序,有两个第二名时接下来就是第四名-dense_rank()l 是连续排序,有两个第二名时仍然跟着第三名3.分类统计 (并显示信息)A B C - - - m a 2 n a 3 m a 2 n b 2 n b 1 x b 3 x b 2 x b 4 h b 3 select a,c,sum(c)over(partition b

4、y a) from t2 得到结果:A B C SUM(C)OVER(PARTITIONBYA) - - - - h b 3 3 m a 2 4 m a 2 4 n a 3 6 n b 2 6 n b 1 6 x b 3 9 x b 2 9 x b 4 9 如果用 sum,group by 则只能得到A SUM(C) - - h 3 m 4 n 6 x 9 无法得到 B 列值 select * from test数据:A B C 1 1 1 1 2 2 1 3 3 2 2 5 3 4 6-将 B 栏位值相同的对应的 C 栏位值加总select a,b,c, SUM(C) OVER (PARTI

5、TION BY B) C_Sumfrom testA B C C_SUM 1 1 1 1 1 2 2 7 2 2 5 7 1 3 3 3 3 4 6 6-如果不需要已某个栏位的值分割,那就要用 nulleg: 就是将 C 的栏位值 summary 放在每行后面select a,b,c, SUM(C) OVER (PARTITION BY null) C_Sumfrom testA B C C_SUM 1 1 1 17 1 2 2 17 1 3 3 17 2 2 5 17 3 4 6 17求个人工资占部门工资的百分比SQL select * from salary;NAME DEPT SAL-

6、- -a 10 2000b 10 3000c 10 5000d 20 4000SQL select name,dept,sal,sal*100/sum(sal) over(partition by dept) percent from salary;NAME DEPT SAL PERCENT- - - -a 10 2000 20b 10 3000 30c 10 5000 50d 20 4000 100二:开窗函数 开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化,举例如下: 1: over(order by salary) 按照 salary 排序进行累计,o

7、rder by 是个默认的开窗函数over(partition by deptno)按照部门分区2:over(order by salary range between 5 preceding and 5 following)每行对应的数据窗口是之前行幅度值不超过 5,之后行幅度值不超过 5例如:对于以下列aa1222345679sum(aa)over(order by aa range between 2 preceding and 2 following)得出的结果是AA SUM- - 1 10 2 14 2 14 2 14 3 18 4 18 5 22 6 18 7 22 9 9 就是说,对于 aa

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号