oracle窗口函数中range interval的使用
oracle窗口函数中range interval配合一般用来针对指定时间范围进行统计。其中range表示范围,between...and 表示之前的范围和之后的范围 , CURRENT ROW表示当前行,INTERVAL '1' day/month/year preceding/following 表示时间范围的选择。
--求采购订单成交记录中 同物料过去一年的采购平均单价
SELECT
W_PURCH_SCHEDULE_LINE_F.PRODUCT_WID,
W_PRODUCT_D.Prod_Name, --item name
W_PURCH_SCHEDULE_LINE_F.UNIT_PRICE,
W_DAY_D.DAY_DT ORDER_DT,
W_PURCH_SCHEDULE_LINE_F.PURCH_ORDER_NUM,
W_PURCH_SCHEDULE_LINE_F.PURCH_ORDER_ITEM,
W_PURCH_SCHEDULE_LINE_F.PURCH_SCHEDULE_NUM,
W_PURCH_SCHEDULE_LINE_F.RELEASE_NUM,
AVG(W_PURCH_SCHEDULE_LINE_F.UNIT_PRICE)OVER(PARTITION BY W_PURCH_SCHEDULE_LINE_F.PRODUCT_WID ORDER BY TRUNC(W_DAY_D.DAY_DT) RANGE BETWEEN INTERVAL '1' year preceding and current row) AVG_PRICE_PAST
FROM W_PURCH_SCHEDULE_LINE_F,
W_PRODUCT_D,
W_DAY_D
WHERE
W_PURCH_SCHEDULE_LINE_F.PRODUCT_WID=W_PRODUCT_D.ROW_WID
AND W_PURCH_SCHEDULE_LINE_F.ORDERED_ON_DT_WID=W_DAY_D.ROW_WID
--求采购订单成交记录中 同物料未来一个月的采购平均单价
SELECT
W_PURCH_SCHEDULE_LINE_F.PRODUCT_WID,
W_PRODUCT_D.Prod_Name, --item name
W_PURCH_SCHEDULE_LINE_F.UNIT_PRICE,
W_DAY_D.DAY_DT ORDER_DT,
W_PURCH_SCHEDULE_LINE_F.PURCH_ORDER_NUM,
W_PURCH_SCHEDULE_LINE_F.PURCH_ORDER_ITEM,
W_PURCH_SCHEDULE_LINE_F.PURCH_SCHEDULE_NUM,
W_PURCH_SCHEDULE_LINE_F.RELEASE_NUM,
AVG(W_PURCH_SCHEDULE_LINE_F.UNIT_PRICE)OVER(PARTITION BY W_PURCH_SCHEDULE_LINE_F.PRODUCT_WID ORDER BY TRUNC(W_DAY_D.DAY_DT) RANGE BETWEEN current row and INTERVAL '1' month following) AVG_PRICE_PAST
FROM W_PURCH_SCHEDULE_LINE_F,
W_PRODUCT_D,
W_DAY_D
WHERE
W_PURCH_SCHEDULE_LINE_F.PRODUCT_WID=W_PRODUCT_D.ROW_WID
AND W_PURCH_SCHEDULE_LINE_F.ORDERED_ON_DT_WID=W_DAY_D.ROW_WID
--求采购订单成交记录中 同物料5天内的采购平均单价
SELECT
W_PURCH_SCHEDULE_LINE_F.PRODUCT_WID,
W_PRODUCT_D.Prod_Name, --item name
W_PURCH_SCHEDULE_LINE_F.UNIT_PRICE,
W_DAY_D.DAY_DT ORDER_DT,
W_PURCH_SCHEDULE_LINE_F.PURCH_ORDER_NUM,
W_PURCH_SCHEDULE_LINE_F.PURCH_ORDER_ITEM,
W_PURCH_SCHEDULE_LINE_F.PURCH_SCHEDULE_NUM,
W_PURCH_SCHEDULE_LINE_F.RELEASE_NUM,
AVG(W_PURCH_SCHEDULE_LINE_F.UNIT_PRICE)OVER(PARTITION BY W_PURCH_SCHEDULE_LINE_F.PRODUCT_WID ORDER BY TRUNC(W_DAY_D.DAY_DT) RANGE BETWEEN INTERVAL '2' day preceding and INTERVAL '1' day following) AVG_PRICE_PAST
FROM W_PURCH_SCHEDULE_LINE_F,
W_PRODUCT_D,
W_DAY_D
WHERE
W_PURCH_SCHEDULE_LINE_F.PRODUCT_WID=W_PRODUCT_D.ROW_WID
AND W_PURCH_SCHEDULE_LINE_F.ORDERED_ON_DT_WID=W_DAY_D.ROW_WID
备注:oracle将查找当前采购日期前2天,后2天范围内的记录,并出去单价的avg值。
oracle窗口函数中range interval的使用的更多相关文章
- Oracle 11g新特性 Interval Partition
分区(Partition)一直是Oracle数据库引以为傲的一项技术,正是分区的存在让Oracle高效的处理海量数据成为可能,在Oracle 11g中,分区技术在易用性和可扩展性上再次得到了增强.在1 ...
- Oracle存储过程中异步调用的实际操作步骤
本文标签:Oracle存储过程 我们都知道在Oracle数据库的实际应用的过程中,我们经常把相关的业务处理逻辑,放在Oracle存储过程中,客户端以通过ADO来进行相关的调用 .而有些相关的业务逻辑 ...
- Oracle Spatial中的空间索引
转自cryolite原文 Oracle Spatial中的空间索引 Oracle Spatial可对空间数据进行R-tree索引,每个空间图层(Spatial Layer)的空间索引元信息都可以在US ...
- 将Oracle数据库中的数据写入Excel
将Oracle数据库中的数据写入Excel 1.准备工作 Oracle数据库"TBYZB_FIELD_PRESSURE"表中数据如图: Excel模板(201512.xls): 2 ...
- --关于null在oracle数据库中是否参与计算,进行验证,
--关于null在oracle数据库中是否参与计算,进行验证,with td as (select null id,1 name from dual ),td1 as ( select null id ...
- swift中Range的使用书名
在swift中Range有两种用法 1.把字符串转换成NSString来使用 //这里是把swift的字符换转换成了nsstring 使用 let str :NSString = text.strin ...
- Oracle 11g中修改默认密码过期天数和锁定次数
Oracle 11g中修改默认密码过期天数和锁定次数 密码过期的原因一般有两种可能: 一.由于Oracle中默认在default概要文件中设置了"PASSWORD_LIFE_TIME=180 ...
- VB类模块中属性的参数——VBA中Range对象的Value属性和Value2属性的一点区别
在VB中,属性是可以有参数的,而VBA中属性使用参数非常常见.比如最常用的:Worksheet.Range("A1:A10") VB的语法,使用参数的不一定是方法,也有可能是属性 ...
- Oracle存储过程中异常Exception的捕捉和处理
Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Var ...
随机推荐
- 《MFC游戏开发》笔记九 游戏中的碰撞判定初步&怪物运动简单AI
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9374935 作者:七十一雾央 新浪微博:http:// ...
- Java中String常用方法
java中String的常用方法1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len= ...
- hdu 3938 并查集
思路:这题的出题人是不是语文不行啊,题目意思说不清楚. 知道是求存在路径的点对数后,用并查集每次记录集合中点的数目,很容易就解决了. #include<set> #include<c ...
- 网络流sap算法模版
递归版sap: #include<cstdio> #include<iostream> #include<cstring> #include<algorith ...
- 初识--Ajax & Json
1,AJAX是一种进行页面局部异步刷新技术. 用AJAX向服务器发送请求和获得服务器返回的数据并更新到页面中. 不是刷新整个页面,而是在HTML页面中使用JavaScript创建XMLHTTPRequ ...
- 深入浅出ExtJS 第四章 表单与输入控件
4.1 制作表单 var form = new Ext.form.FormPanel({ title:'form', defaultType:'textfield', buttonAlign:'cen ...
- .NET DLL 保护措施详解(三)最终效果
针对.NET DLL 保护措施详解所述思路完成最终的实现,以下为程序包下载地址 下载 注意: 运行环境为.net4.0,需要安装VS2015 C++可发行组件包vc_redist.x86.exe.然后 ...
- DWZ (JUI) 教程 dwz框架 刷新dialog解决方案
在DWZ中进行ajax表单提交后,通过回调函数来返回状态结果,以及返回是否需要刷新父页的navTabId. DWZ给我们提供了两个回调函数,一个是子窗口为navTab的navTabAjax ...
- 安装新版本的mysql数据库
默认情况,在CentOS 6.8 下通过yum安装的是5.1.73版本,现在需求是安装5.7版本. -------------------------------------------------- ...
- PCB常用度量衡单位
1英尺=12英寸 1英寸inch=1000密尔mil 1mil=25.4um 1mil=1000uin (mil密耳有时也成英丝) 1um=40uin(有些公司称微英寸为麦,其实是微英寸) 1OZ=2 ...