分析函数是oracle 8.1.6中就引入的一个全新的概念,为我们分析数据提供了一种简单高效的处理方式.分析函数出现以前,我们必须使用自联查询,子查询或者内联视图,甚至复杂的存储过程实现的语句,现在只要一条简单的sql语句就可以实现了,而且在执行效率方面也有相当大的提高.

分析函数参考手册:http://xsb.itpub.net/post/419/33028

分析函数的使用方法
1. 自动汇总函数rollup,cube,
2. rank 函数, rank,dense_rank,row_number
3. lag,lead函数
4. sum,avg,的移动增加,移动平均数
5. ratio_to_report报表处理函数
6. first,last取基数的分析函数

本人在项目中由于用到小计、合计的统计,前面想到用union all,但这样有点麻烦并且效率也不高,就从网上查到资料说是oracle 8i、oracl 9i、oracle 10g 中已经分析函数对数据统计的处理,于是就顺便学习了一下这些函数的用法,拿出来分享给大家共同学习。

1、Oracle ROLLUP和CUBE 用法    
      Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。如果是Group by  ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。

如果是GROUP BY CUBE(A, B, C),则首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行GROUP BY操作。 grouping_id()可以美化效果。除了使用GROUPING函数,还可以使用GROUPING_ID来标识GROUP BY的结果。

也可以 Group by Rollup(A,(B,C)) ,Group by A Rollup(B,C),…… 这样任意按自己想要的形式结合统计数据,非常方便。

2、Rank的用法

功能描述:根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置。组内的数据按ORDER BY子句排序,然后给每一行赋一个号,从而形成一个序列,该序列从1开始,往后累加。每次ORDER BY表达式的值发生变化时,该序列也随之增加。有同样值的行得到同样的数字序号(认为null时相等的)。然而,如果两行的确得到同样的排序,则序数将随后跳跃。若两行序数为1,则没有序数2,序列将给组中的下一行分配值3,DENSE_RANK则没有任何跳跃。
       rank()是跳跃排序,比如有两个第二名时接下来就是第四名(同样是在各个分组内)

dense_rank()l是连续排序,比如有两个第二名时仍然跟着第三名。

3、First的用法

功能描述:从DENSE_RANK返回的集合中取出排在最前面的一个值的行(可能多行,因为值可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录。

4、Last的用法

功能描述:从DENSE_RANK返回的集合中取出排在最后面的一个值的行(可能多行,因为值可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录。

5、Lag的用法

功能描述:可以访问结果集中的其它行而不用进行自连接。它允许去处理游标,就好像游标是一个数组一样。在给定组中可参考当前行之前的行,这样就可以从组中与当前行一起选择以前的行。Offset是一个正整数,其默认值为1,若索引超出窗口的范围,就返回默认值(默认返回的是组中第一行),其相反的函数是LEAD。

具体各个函数的使用方法可去baidu里学习,这里只是简要的介绍一下作用。

掌握这些函数的用法,可以在程序开发中减少很多弯路,并且还可以大大提高运行效率。

转载于:https://www.cnblogs.com/ZHF/archive/2009/03/26/1422065.html

Oracle 分析函数的使用(主要是rollup用法)相关推荐

  1. Oracle应用之分组函数之ROLLUP用法

    rollup函数 本博客简单介绍一下oracle分组函数之rollup的用法,rollup函数常用于分组统计,也是属于oracle分析函数的一种 环境准备 create table dept as s ...

  2. oracle rollup 排序,Oracle分组函数之ROLLUP用法

    rollup函数 本博客简单介绍一下oracle分组函数之rollup的用法,rollup函数常用于分组统计,也是属于oracle分析函数的一种 环境准备 create table dept as s ...

  3. oracle分析函数用途,深入探讨:oracle中row_number() over()分析函数用法

    row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内 ...

  4. oracle regr,oracle 分析函数

    一.Oracle分析函数入门 分析函数是什么? 分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统 ...

  5. oracle 分析函数、GROUPING函数

    分析函数 over(Partition by...) 一个超级牛皮的ORACLE特有函数.天天都用ORACLE,用了快2年了.最近才接触到这个功能强大而灵活的函数.真实惭愧啊!oracle的分析函数o ...

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

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

  7. oracle中的exists 和 not exists 用法详解

    from:http://blog.sina.com.cn/s/blog_601d1ce30100cyrb.html oracle中的exists 和 not exists 用法详解 (2009-05- ...

  8. oracle中的exists 和not exists 用法详解

    有两个简单例子,以说明 "exists"和"in"的效率问题 1) select * from T1 where exists(select 1 from T2 ...

  9. 【分析函数】Oracle分析函数之LAG和LEAD

    [分析函数]Oracle分析函数之LAG和LEAD Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值.这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的 ...

最新文章

  1. 1151 LCA in a Binary Tree (含求LCA的通法)
  2. JDK1.8源码分析之HashMap(一) (转)
  3. mysql十分钟分组_MYSQL每隔10分钟进行分组统计的实现方法
  4. Spring Data JPA 从入门到精通~方法的查询策略设置
  5. (1)JavaScript入门
  6. Bootstrap 标签和徽章
  7. Java讲课笔记06:选择结构与条件循环
  8. 搜索总结c++ 内存泄露问题
  9. HDU——1257最少拦截系统(贪心)
  10. html 页面跳转 加载效果,好看的html页面加载源码带跳转
  11. 数据库比对升级脚本生成工具分享
  12. Boost Test学习总结(C++)
  13. c莫比乌斯函数_莫比乌斯函数
  14. MAC电脑如何用苹果电脑微信版实现多开
  15. 数据恢复国赛经验与方法分享(电子产品芯片级检测维修与数据恢复赛项)
  16. 池塘cPond分享会第5期 • 守望者联盟 • 巴比特副总裁马千里 • 数字艺术对Web3的价值...
  17. BOSS创投社群:要想成为富人,得改变原有思维,谈谈什么是富人思维模式!
  18. 【转】excel音标乱码
  19. USB驱动分析(三)
  20. 人行二代征信报告模版_【双12七天价】人行2代征信报告OCR识别API-查询征信报告识别结果【个人信用报告解析】【最新版】_商业智能_OCR_人工智能-云市场-阿里云...

热门文章

  1. 远程控制slam小车及pid调试PC与树莓派ssh链接时出现间歇性联通段开网络故障acailable I Destination Host Unreachable_然后5s后切换了一个地图
  2. python获取本地时间并向服务器发送udp报文_python3通过udp实现组播数据的发送和接收操作...
  3. ppt转html5 带动画_这组PPT设计,真的太漂亮了!
  4. STM32:RS485通信和Modbus通信协议汇总
  5. 济源一中2021高考成绩查询,济源一中2019高考成绩喜报、一本二本上线人数情况...
  6. new file 的路径问题_cmake系列 - 解决__FILE__ 宏绝对路径的问题(相对路径)
  7. ❤️Spring的声明式事务
  8. Mybatis新发现—在idea中数据库操作出现了异常,最好的查错助手居然是这个!
  9. 通过字符串方法创建新字符串如何打出反斜杠、单引号、双引号、响铃、换行符、水平制表符
  10. altium designer快捷键大全