学习 东方醉仙 的 “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子句学习笔记例 解析相关推荐

  1. oracle数据库修改写入状态,【学习笔记】Oracle oradebug 使用oradebug修改数据库SCN方法案例...

    天萃荷净 使用oradebug修改数据库scn,使用oradebug修改数据库scn的案例. 这里也做了两个测试,发现该功能确实很巧妙,通过修改内存中的scn值,然后写入控制文件和数据文件,实现修改s ...

  2. oracle查询当前归档scn_【学习笔记】Oracle数据库 查看归档日志存放的位置

    [学习笔记]Oracle数据库 查看归档日志存放的位置 时间:2016-10-21 19:19   来源:Oracle研究中心   作者:HTZ   点击: 次 天萃荷净 分享一篇关于查看Oracle ...

  3. oracle rac添加监听,【学习笔记】Oracle 10G RAC增加节点时手动注册监听服务的案例步骤...

    [学习笔记]Oracle 10G RAC增加节点时手动注册监听服务的案例步骤 时间:2016-10-22 22:53   来源:Oracle研究中心   作者:HTZ   点击: 次 天萃荷净 Ora ...

  4. Oracle中用system存数据,【学习笔记】Oracle表空间 数据存放system表空间影响数据库性能...

    天萃荷净 分享一篇,关于Oracle数据库system表空间研究,不能将用户数据存放在system表空间的原因 为什么不建议客户把业务数据存放到SYSTEM表空间中,一直想通过试验的数据来说明问题,今 ...

  5. oracle 下bdump占用大,【学习笔记】Oracle oradebug 利用oradebug释放被删除文件空间的案例...

    天萃荷净 利用oradebug释放被删除文件空间,运维DBA反映系统空间不足,由于trace跟踪文件占用,删除后不能释放空间,分析原因为oracle进程句柄占用 在很多时候,检查系统时候发现,由于某个 ...

  6. oracle dg 增加redo组,【学习笔记】Oracle Data Guard 修改dataguard主库redo组数和大小

    天萃荷净 运维DBA反映检查到Oracle DataGuard环境redo日志较小,总结一下修改dataguard主库redo组数和大小方法 在一个dg环境中,配置的是实时同步,需要增加主库的redo ...

  7. oracle中如何格式化输出,【学习笔记】数据库日期时间格式化输出案例

    天萃荷净 分享一篇关于开发DBA在工作中常用到的日期时间格式化输出方法案例,含:mysql.sql server.oracle 3种数据库日期时间格式化输出 1.mysql数据库时间格式化输出 DAT ...

  8. oracle复制另一个字段,【学习笔记】Oracle存储过程 表中列不同时动态复制表中数据到另一个表中...

    天萃荷净 分享一篇关于Oracle存储过程实现表之间数据复制功能.两表中列不同,动态的将一表中的数据复制到另一个表中案例 因为要用到回收站功能,删除一条记录,要先放到一个delete表中,以便以后恢复 ...

  9. oracle rac 仲裁盘_【学习笔记】深入研究Oracle RAC节点驱逐的条件和案例

    天萃荷净 Oracle研究中心学习笔记:分享一篇关于Oracle数据库RAC环境中节点间管理的文章,详细介绍了RAC节点驱逐条件和管理方法. 本站文章除注明转载外,均为本站原创: 转载自loveOra ...

最新文章

  1. [leetcode] Palindrome Number
  2. Python之pyspark:pyspark的简介、安装、使用方法之详细攻略
  3. inline hook学习
  4. 饼图的引导线怎么加_第0004期,复工了,这个Excel渠道分析(矩阵)图送给大家...
  5. opencv书籍调研
  6. springboot----shiro集成
  7. .netcore 分布式事务CAP2.6 快速入门
  8. 中南大学王斌计算机学院,中南大学 信息科学与工程学院,长沙 410083
  9. vuex中各属性的使用
  10. ztree 标准得json数据格式_Django+zTree构建组织架构树
  11. jquery选择器从认识到使用初级篇
  12. html实现贪吃蛇游戏(源码)
  13. 计算机桌面文件如何发送给qq好友,怎么把电脑里的文件夹发给qq好友
  14. PayPal如何提现,PayPal提现手续费是多少?
  15. python二级考试大纲小学生_Python语言二级考试大纲
  16. STM32F103采集光照传感器BH1750程序,测试可以用
  17. Nginx使用场景及相关配置
  18. finalcut剪切快捷键_Final Cut Pro X常用快捷键大全 FCPX快捷键
  19. mac 安装python并切换到python3版本
  20. 有啊网页诊断工具相关总结

热门文章

  1. Java获得当前日期是星期几
  2. 高德地图Web端JavaScript API开发(一)---个性化展示(自定义地图)
  3. Twitter狗狗数据清洗
  4. logging的用法
  5. 智能文档处理黑科技,拥抱更高效的数字世界
  6. 微信分享闪退的解决办法
  7. 百练noi 22:神奇的幻方
  8. Java注解Target、Retention、Inherited、Documented的作用简述,以@Transactional注解为例(处女座总结)
  9. 有多少人知道微信来电铃声可以跟更换?
  10. AutoGPT自主人工智能用法和使用案例