摘要

  • 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. 机器学习技法课之Aggregation模型

    Courses上台湾大学林轩田老师的机器学习技法课之Aggregation 模型学习笔记. 混合(blending) 本笔记是Course上台湾大学林轩田老师的<机器学习技法课>的学习笔记 ...

  2. React 读书笔记

    序言: 领导安排部门同事本月内看一本跟自己职业相关的书籍, 根基类的书籍已经看过了,重复阅读的意义不大,所以我平时看的都是视频,也许是视频作者没有出书的条件,也许是现在出书看的人越来越少了,也许有其他 ...

  3. Js获取url传递过来的参数

    原理跟取cookie值一样的 function getParamer(paramer){ var url=window.location.href.split("?")[1];/* ...

  4. 两种进入容器的方法 - 每天5分钟玩转 Docker 容器技术(23)

    我们经常需要进到容器里去做一些工作,比如查看日志.调试.启动其他进程等.有两种方法进入容器:attach 和 exec. docker attach 通过 docker attach 可以 attac ...

  5. Java web开发中页面跳转小技巧——跳转后新页面在新窗口打开

    最近学习Java web,在学习过程中想实现一个需求,就是在jsp页面跳转的时候,希望跳转后的新页面在新窗口中打开, 而不是覆盖原来的页面,这个需求使我困惑了好长时间,后来通过大海捞针似的在网上寻找方 ...

  6. Python教程(1.2)——Python交互模式

    上一节已经说过,安装完Python,在命令行输入"python"之后,如果成功,会得到类似于下面的窗口: 可以看到,结尾有3个>符号(>>>).>&g ...

  7. 学习笔记TF019:序列分类、IMDB影评分类

    序列分类,预测整个输入序列的类别标签.情绪分析,预测用户撰写文字话题态度.预测选举结果或产品.电影评分. 国际电影数据库(International Movie Database)影评数据集.目标值二 ...

  8. (转)Nginx的启动、停止与重启

    启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 例如: [root@LinuxServer sbin]# /usr/local/nginx/sbin/nginx -c /us ...

  9. charles连接手机抓包

    写给我自己: 如果是使用charles抓包.一定要tm的保证手机和电脑连的是一个网. 1.proxy setting,查看charles,端口 2.勾选 3.ipconfig,查看自己电脑的ip地址 ...

  10. ue4打包问题的巧妙解决——二分回退大法!

    昨天突然发生了一件非常恐怖的事--我的ue4项目居然不能打包了!! 大概是这么一回事:  UATHelper: 打包 (Windows (64位)): UnrealBuildTool: ERROR:  ...