oracle model 分组,oracle model子句学习笔记例 解析
学习 东方醉仙 的 “oracle model子句学习笔记例”,并记之
总看model子句
SELECT PRODUCT, COUNTRY, YEAR, WEEKS, RECEIPTS, SALE, INVENTORY FROM SALES_FACT
WHERE /*COUNTRY = 'Australia'
AND PRODUCT = 'Xtend Memory'
AND */
YEAR = '2001'
AND WEEKS <= 5
AND ROWNUM <= 50
/*MODEL 标示字*/
MODEL
/*RETURN {ALL|UPDATED} ROWS 返回的结果集是否只包含修改或新增的记录,默认是ALL*/
RETURN UPDATED ROWS
/*PARTITION BY 按参数中的列分组,之后的运算都是分组进行的;参数可以是表达式,但是必须有别名*/
PARTITION BY(PRODUCT, COUNTRY)
/*DIMENSION BY 声明各分组中的维度字段,相当于多维键值对的建,字段值即键;参数可以是表达式,但是必须有别名*/
DIMENSION BY(YEAR, WEEKS)
/*MEASURES 声明各分组中的指标字段,即键值对中的值;参数可以是表达式,但是必须有别名*/
MEASURES(0 INVENTORY, RECEIPTS, SALE)
/*AUTOMATIC ORDER|SEQUENTIAL ORDER 指标计算的顺序,逻辑依赖顺序|书写顺序,默认是SEQUENTIAL ORDER 。*/
RULES AUTOMATIC
ORDER
/*-6.008 = 12.016 + 162.216 - 180.24*/
(INVENTORY [ YEAR, WEEKS ] = NVL(INVENTORY [ CV(YEAR), CV(WEEKS) - 1 ], 0)
/**/
+RECEIPTS [ CV(YEAR), CV(WEEKS) ]
/**/
-SALE [ CV(YEAR), CV(WEEKS) ]
/**/
)
ORDER BY PRODUCT, COUNTRY, WEEKS, RECEIPTS, SALE
excel对应部分公式见 http://download.csdn.net/detail/jgmydsai/6014673
位置标记
SELECT PRODUCT, COUNTRY, YEAR, WEEKS, RECEIPTS, SALE, INVENTORY
FROM SALES_FACT
WHERE COUNTRY = 'Australia'
AND PRODUCT = 'Xtend Memory'
AND YEAR IN ('2001', '2002')
AND WEEKS <= 5
/*MODEL 标示字*/
MODEL
/*RETURN {ALL|UPDATED} ROWS 返回的结果集是否只包含修改或新增的记录,默认是ALL*/
RETURN UPDATED ROWS
/*PARTITION BY 按参数中的列分组,之后的运算都是分组进行的;参数可以是表达式,但是必须有别名*/
PARTITION BY(PRODUCT, COUNTRY)
/*DIMENSION BY 声明各分组中的维度字段,相当于多维键值对的建,字段值即键;参数可以是表达式,但是必须有别名*/
DIMENSION BY(YEAR, WEEKS)
/*MEASURES 声明各分组中的指标字段,即键值对中的值;参数可以是表达式,但是必须有别名*/
MEASURES(0 INVENTORY, RECEIPTS, SALE)
/*AUTOMATIC ORDER|SEQUENTIAL ORDER 指标计算的顺序,逻辑依赖顺序|书写顺序,默认是SEQUENTIAL ORDER 。*/
RULES AUTOMATIC
ORDER
/**/
(INVENTORY [ YEAR, WEEKS ] = NVL(INVENTORY [ CV(YEAR), CV(WEEKS) - 1 ], 0)
/**/
+RECEIPTS [ CV(YEAR), CV(WEEKS) ]
/**/
-SALE [ CV(YEAR), CV(WEEKS) ],
/*原数据中没有2002新增一行*/
SALE [ 2002, 1 ] = 0,
/**/
RECEIPTS [ 2002, 1 ] = 0
/**/
)
符号标记
SELECT PRODUCT, COUNTRY, YEAR, WEEKS, SALE
FROM SALES_FACT
WHERE PRODUCT = 'Xtend Memory'
AND COUNTRY = 'Australia'
MODEL
/*只返回修改过和数据*/
RETURN UPDATED ROWS
PARTITION BY(PRODUCT, COUNTRY)
DIMENSION BY(YEAR, WEEKS)
MEASURES(SALE)
RULES /**/
(SALE [ YEAR IN ('2000', '2001'),
WEEKS IN (1, 2) ] ORDER BY YEAR,
WEEKS = SALE [ CV(YEAR),
CV(WEEKS) ] * 1.2
/**/)
ORDER BY YEAR, WEEKS;
/*等价于*/
SELECT PRODUCT, COUNTRY, YEAR, WEEKS, SALE * 1.2 AS SALE
FROM SALES_FACT
WHERE PRODUCT = 'Xtend Memory'
AND COUNTRY = 'Australia'
AND YEAR IN ('2000', '2001')
AND WEEKS IN (1, 2);
model子句中for循环
SELECT PRODUCT,COUNTRY,YEAR,WEEKS,RECEIPTS,SALE--,INVENTORY
FROM SALES_FACT
WHERE PRODUCT = 'Xtend Memory'
AND COUNTRY = 'Australia'
AND YEAR = '2001'
AND WEEKS <= 10
MODEL RETURN UPDATED ROWS
PARTITION BY (PRODUCT,COUNTRY)
DIMENSION BY (YEAR,WEEKS)
MEASURES(RECEIPTS,SALE,0 INVENTORY)
RULES AUTOMATIC ORDER
(
INVENTORY[YEAR,WEEKS] = NVL(INVENTORY[CV(YEAR),CV(WEEKS)-1],0)
+ RECEIPTS[CV(YEAR),CV(WEEKS)]
- SALE[CV(YEAR),CV(WEEKS)],
/*FOR 循环 符合条件数据改为0*/
SALE[2001,FOR WEEKS FROM 3 TO 10 INCREMENT 1] = 0,
RECEIPTS[2001,FOR WEEKS FROM 3 TO 10 INCREMENT 1] = 0
)
ORDER BY WEEKS,RECEIPTS,SALE
关于return updated rows子句
SELECT PRODUCT,COUNTRY,YEAR,WEEKS,SALE
FROM SALES_FACT
WHERE PRODUCT = 'Xtend Memory'
AND COUNTRY = 'Australia'
MODEL
/*返回所有数据包括修改及未修改的*/
RETURN ALL ROWS
PARTITION BY (PRODUCT,COUNTRY)
DIMENSION BY (YEAR,WEEKS)
MEASURES(SALE)
RULES
(
SALE[YEAR IN('2000','2001'),WEEKS IN(1,2)]
ORDER BY YEAR,WEEKS
= SALE[CV(YEAR),CV(WEEKS)]*1.2
)
ORDER BY YEAR,WEEKS
在model子句中使用聚合函数
SELECT PRODUCT,COUNTRY,YEAR,WEEKS,SALE,AVG_SALE,INVENTORY,MAX_INVTY
FROM SALES_FACT
WHERE PRODUCT = 'Xtend Memory'
AND COUNTRY = 'Australia'
AND YEAR = '2001'
AND WEEKS <= 10
MODEL RETURN UPDATED ROWS
PARTITION BY (PRODUCT,COUNTRY)
DIMENSION BY (YEAR,WEEKS)
MEASURES (RECEIPTS,SALE,0 INVENTORY,0 AVG_SALE,0 MAX_INVTY)
RULES AUTOMATIC ORDER
(
INVENTORY[YEAR,WEEKS] = NVL(INVENTORY[CV(YEAR),CV(WEEKS)-1],0)
+ RECEIPTS[CV(YEAR),CV(WEEKS)]
- SALE[CV(YEAR),CV(WEEKS)],
AVG_SALE[YEAR,ANY] = AVG(SALE)[CV(YEAR),WEEKS],
MAX_INVTY[YEAR,ANY] = MAX(INVENTORY)[CV(YEAR),WEEKS]
)
ORDER BY WEEKS,SALE,INVENTORY
oracle model 分组,oracle model子句学习笔记例 解析相关推荐
- oracle数据库修改写入状态,【学习笔记】Oracle oradebug 使用oradebug修改数据库SCN方法案例...
天萃荷净 使用oradebug修改数据库scn,使用oradebug修改数据库scn的案例. 这里也做了两个测试,发现该功能确实很巧妙,通过修改内存中的scn值,然后写入控制文件和数据文件,实现修改s ...
- oracle查询当前归档scn_【学习笔记】Oracle数据库 查看归档日志存放的位置
[学习笔记]Oracle数据库 查看归档日志存放的位置 时间:2016-10-21 19:19 来源:Oracle研究中心 作者:HTZ 点击: 次 天萃荷净 分享一篇关于查看Oracle ...
- oracle rac添加监听,【学习笔记】Oracle 10G RAC增加节点时手动注册监听服务的案例步骤...
[学习笔记]Oracle 10G RAC增加节点时手动注册监听服务的案例步骤 时间:2016-10-22 22:53 来源:Oracle研究中心 作者:HTZ 点击: 次 天萃荷净 Ora ...
- Oracle中用system存数据,【学习笔记】Oracle表空间 数据存放system表空间影响数据库性能...
天萃荷净 分享一篇,关于Oracle数据库system表空间研究,不能将用户数据存放在system表空间的原因 为什么不建议客户把业务数据存放到SYSTEM表空间中,一直想通过试验的数据来说明问题,今 ...
- oracle 下bdump占用大,【学习笔记】Oracle oradebug 利用oradebug释放被删除文件空间的案例...
天萃荷净 利用oradebug释放被删除文件空间,运维DBA反映系统空间不足,由于trace跟踪文件占用,删除后不能释放空间,分析原因为oracle进程句柄占用 在很多时候,检查系统时候发现,由于某个 ...
- oracle dg 增加redo组,【学习笔记】Oracle Data Guard 修改dataguard主库redo组数和大小
天萃荷净 运维DBA反映检查到Oracle DataGuard环境redo日志较小,总结一下修改dataguard主库redo组数和大小方法 在一个dg环境中,配置的是实时同步,需要增加主库的redo ...
- oracle中如何格式化输出,【学习笔记】数据库日期时间格式化输出案例
天萃荷净 分享一篇关于开发DBA在工作中常用到的日期时间格式化输出方法案例,含:mysql.sql server.oracle 3种数据库日期时间格式化输出 1.mysql数据库时间格式化输出 DAT ...
- oracle复制另一个字段,【学习笔记】Oracle存储过程 表中列不同时动态复制表中数据到另一个表中...
天萃荷净 分享一篇关于Oracle存储过程实现表之间数据复制功能.两表中列不同,动态的将一表中的数据复制到另一个表中案例 因为要用到回收站功能,删除一条记录,要先放到一个delete表中,以便以后恢复 ...
- oracle rac 仲裁盘_【学习笔记】深入研究Oracle RAC节点驱逐的条件和案例
天萃荷净 Oracle研究中心学习笔记:分享一篇关于Oracle数据库RAC环境中节点间管理的文章,详细介绍了RAC节点驱逐条件和管理方法. 本站文章除注明转载外,均为本站原创: 转载自loveOra ...
最新文章
- [leetcode] Palindrome Number
- Python之pyspark:pyspark的简介、安装、使用方法之详细攻略
- inline hook学习
- 饼图的引导线怎么加_第0004期,复工了,这个Excel渠道分析(矩阵)图送给大家...
- opencv书籍调研
- springboot----shiro集成
- .netcore 分布式事务CAP2.6 快速入门
- 中南大学王斌计算机学院,中南大学 信息科学与工程学院,长沙 410083
- vuex中各属性的使用
- ztree 标准得json数据格式_Django+zTree构建组织架构树
- jquery选择器从认识到使用初级篇
- html实现贪吃蛇游戏(源码)
- 计算机桌面文件如何发送给qq好友,怎么把电脑里的文件夹发给qq好友
- PayPal如何提现,PayPal提现手续费是多少?
- python二级考试大纲小学生_Python语言二级考试大纲
- STM32F103采集光照传感器BH1750程序,测试可以用
- Nginx使用场景及相关配置
- finalcut剪切快捷键_Final Cut Pro X常用快捷键大全 FCPX快捷键
- mac 安装python并切换到python3版本
- 有啊网页诊断工具相关总结