摘要

  • oracle的over 子函数可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序,其中PARTITION BY 为分组字段,ORDER BY 指定排序字段这对统计分析这类问题意想不到的效果.
  1. over函数的妙用

例1: 累计求和

select fdate 日期,total 金额,tax 税额,
sum(total) over (order by fdate) 累计金额,sum(tax) over (order by fdate) 累计税额 
from
( select fildate fdate,sum(total) total,sum(tax) tax from stkin t group by fildate )
order by fdate;

例2:累计求和月分组统计

select fdate 日期,total 金额,tax 税额,
sum(total) over (order by fdate) 累计金额,sum(tax) over (order by fdate) 累计税额,
sum(total) over (partition by yymm order by fdate) 本月累计金额,
sum(tax) over (partition by yymm order by fdate) 本月累计税额,yymm from (select fildate fdate,to_char(fildate,'yyyy-mm') yymm,sum(total) total,sum(tax) tax from stkin t group by fildate)
order by fdate,yymm;

例3:占比计算

select fdate 日期,total 金额,tax 税额,
sum(total) over (order by fdate,yymm) 累计金额,sum(tax) over (order by fdate,yymm) 累计税额,
sum(total) over (partition by yymm order by fdate,yymm) 本月累计金额,sum(tax) over (partition by yymm order by fdate,yymm) 本月累计税额,
sum(total) over () 累计金额,
) 占比,
) 月占比,yymm
from (select fildate fdate,to_char(fildate,'yyyy-mm') yymm,sum(total) total,sum(tax) tax from stkin t group by fildate) 
order by fdate,yymm;

注1:partition by 表示分组

注2:在"... from emp;"后面不要加order by 子句,使用的分析函数的(partition by yymm order by fdade,yymm)里已经排序的语句了,如果再在句尾添加排序子句,一致倒罢了,不一致,结果就令人费劲了.

2.利用 lag(),lead() 取上下n条记录取值

例1:

select fdate 日期,total 金额,tax 税额,
lag(total,,null) over(order by fdate) 上1条记录金额,
lead(total,,null) over(order by fdate) 下1条记录金额,yymm
from (
select fildate fdate,to_char(fildate,'yyyy-mm') yymm,sum(total) total,sum(tax) tax from stkin t
group by fildate
) order by fdate,yymm;

Oracle的over子函数的妙用的更多相关文章

  1. CSS技巧-rgba函数的妙用

    先简单介绍一下: rgba()函数是平时开发中经常遇到的,这篇文章也做了一个比较详细的解读以及一系列的应用. 对它的工作原理做一番分析:就是具有一定透明度的盒子: 还比较了rgba()函数和不透明度属 ...

  2. Oracle数据库之六 单行函数

    六.单行函数 6.1.认识单行函数 ​ 函数就是和 Java 语言之中的方法的功能是一样的,都是为了完成某些特定操作的功能支持,而在 Oracle 数据库里面也包含了大量的单行函数,这些函数掌握了以后 ...

  3. Oracle索引梳理系列(六)- Oracle索引种类之函数索引

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  4. php extract 函数的妙用 数组键名为声明为变量,键值赋值为变量内容

    extract 函数的妙用 数组键名为声明为变量,键值赋值为变量内容 它的主要作用是将数组展开,键名作为变量名,元素值为变量值,可以说为数组的操作提供了另外一个方便的工具

  5. oracle 中的trunc()函数及加一个月,一天,一小时,一分钟,一秒钟方法

    返回处理后的数据,不同于round()(对数值进行四舍五入处理),该函数不对指定小数前或后的数值部分进行舍入处理. 语法:trunc(number[,decimals]) 其中,number为待做处理 ...

  6. 《oracle每日一练》oracle截取字符的函数

    转载 在Oracle中 可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符. 在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置. 语法: instr(sourceStri ...

  7. Shell 语法 if 、 case 、for 、 while、 until 、select 、repeat、子函数

    if语法 :   if [ expression ]    then   commandselif [ expression2 ]   then   commandselse   commandsfi ...

  8. C++ 数组长度 以及 数组名作为参数传递给函数 以及 为什么不在子函数中求数组长度

    在看排序,首先是插入排序,思路理清后想用代码实现,然后问题来了: 如何求数组长度? 如果没记错,在Java中应该是有直接可用的方法的, Python中(序列)也有.len,在C/C++中,字符串倒是有 ...

  9. Oracle中的单行函数

    Oracle中的单行函数 1 字符函数 UPPER()--将字符串转换为大写 SELECT UPPER('abc') FROM dual; LOWER()-将字符串转换为小写 SELECT LOWER ...

随机推荐

  1. DOM详解

    浏览器工作的基本流程 1.浏览器开始解析html文档,构建DOM树(DOM tree),DOM树的节点由文档的标签.属性.文本等组成:2.解析外部CSS文件及style标签中的样式信息,这些样式信息将 ...

  2. opencv基础到进阶(1)

    Opencv是一个用户基础非常多的视觉开发库,可以用来实现人脸识别等功能,由于涉及到大量的调用与计算,所以对硬件的条件要求很高,并且还需要时时刻刻注意内存溢出这个问题,怎么样?很刺激吧. 从这篇文章开 ...

  3. 设计模式二:MVC

    先附上部分代码: /* *MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. *Model(模型) - 模型代表一个存取数据的对 ...

  4. C语言到C++(1) - 基本变化

    说到C++和C语言的区别,大部分人都会想到面向对象和面向过程.然而这种说法并不准确.面向对象和面向过程指的是两种不同的程序设计思想,而C++与C是两种编程语言,难道C++就不能用于面向过程去解决问题吗 ...

  5. JavaScript 特效三大系列总结

    一. offset系列 1. offset系列的5个属性 1. offsetLeft : 用于获取元素到最近的定位父盒子的左侧距离 * 计算方式: 当前元素的左边框的左侧到定位父盒子的左边框右侧 * ...

  6. (转)微信禁用右上角的分享按钮,WeixinJSBridge API以及隐藏分享的子按钮等菜单项

    <!--禁用微信分享按钮--> <script> function onBridgeReady() { WeixinJSBridge.call('hideOptionMenu' ...

  7. zookeeper源码分析-server-util

    zxid (ZooKeeper Transaction Id,每次请求对应一个唯一的zxid,如果zxid a < zxid b ,则可以保证a一定发生在b之前) zookeeper采用了递增的 ...

  8. 【转载】图文详解 IntelliJ IDEA 15 创建普通 Java Web 项目

    第 1 部分:新建一个 Java Web Application 项目 File -> New -> Project-,请选择 Java EE 这个模块下的 Web Application ...

  9. C#中switch的使用

    今天在网上看到有人给出这么一个程序需求,博主就拿来回忆回忆C#中switch的用法 程序需求如下: 根据星期几(一 ~日) ,输出特价菜“一”.“二”.“三”,输出“干煸扁豆6元.”“四”.“五”,输 ...

  10. Eclipse导出JavaDoc中文乱码问题解决

    在Eclipse里 export 选 JavaDoc,在向导的最后一页的Extra JavaDoc Options 里填上参数即可 比如项目采用的是UTF-8的编码就填:-encoding UTF-8 ...