oracle编程入门笔记2015-01-28--model子句原理
2015-01-29 10:41
447 查看
model 子句完整语法,先不着急理解,看完后面的回头来看看model的完整语法。
model子句功能简述
model子句是根据dimension by(<cols>)指定的列生成一个多维数组,一般都是二维的,measures(<cols>)指定的是需要计算的列。计算规则就是rules。最后再将上述的多维数组转换为表结构。dimension by 和measures指定的列都转换为表里面的行。用图形说明。
原始表的数据如图,有三列,客户名称,客户交易时间,金额
1.没有任何逻辑,先展示一下model的原理
select * from custanalysebydayview
where fcustname = '张卫'
model
dimension by (fcustname,fday)
measures(fmoney fmoney)
rules(fmoney['张卫','16'] = fmoney['张卫','31'])
这段代码将张卫16号的订单额,修改为31号的。
第一步,model将上表按照dimension转换为二维表格,横向为fcustname,纵向为fday(可能反过来,我没有验证,但是不影响最后结果)一个fcustname和一个fday就唯一确定了一个fmoney,如下图所示
第二步,按照rules中的公式计算measures指定的单元格。
fmoney['张卫','16'] = fmoney['张卫','31'] 这个公式对应到上图就是把['张卫','31'] 单元格的值赋值到['张卫','16']
最后再把二维表格还原成表结构。形成最终结果。
model还有很多的语法细节参考oracle官方文档:https://docs.oracle.com/database/121/DWHSG/sqlmodel.htm#DWHSG8771
MODEL [<global reference options>] [<reference models>] [MAIN <main-name>] [PARTITION BY (<cols>)] DIMENSION BY (<cols>) MEASURES (<cols>) [<reference options>] [RULES] <rule options> (<rule>, <rule>,.., <rule>) <global reference options> ::= <reference options> <ret-opt> <ret-opt> ::= RETURN {ALL|UPDATED} ROWS <reference options> ::= [IGNORE NAV | [KEEP NAV] [UNIQUE DIMENSION | UNIQUE SINGLE REFERENCE] <rule options> ::= [UPDATE | UPSERT | UPSERT ALL] [AUTOMATIC ORDER | SEQUENTIAL ORDER] [ITERATE (<number>) [UNTIL <condition>]] <reference models> ::= REFERENCE ON <ref-name> ON (<query>) DIMENSION BY (<cols>) MEASURES (<cols>) <reference options>
model子句功能简述
model子句是根据dimension by(<cols>)指定的列生成一个多维数组,一般都是二维的,measures(<cols>)指定的是需要计算的列。计算规则就是rules。最后再将上述的多维数组转换为表结构。dimension by 和measures指定的列都转换为表里面的行。用图形说明。
原始表的数据如图,有三列,客户名称,客户交易时间,金额
1.没有任何逻辑,先展示一下model的原理
select * from custanalysebydayview
where fcustname = '张卫'
model
dimension by (fcustname,fday)
measures(fmoney fmoney)
rules(fmoney['张卫','16'] = fmoney['张卫','31'])
这段代码将张卫16号的订单额,修改为31号的。
第一步,model将上表按照dimension转换为二维表格,横向为fcustname,纵向为fday(可能反过来,我没有验证,但是不影响最后结果)一个fcustname和一个fday就唯一确定了一个fmoney,如下图所示
第二步,按照rules中的公式计算measures指定的单元格。
fmoney['张卫','16'] = fmoney['张卫','31'] 这个公式对应到上图就是把['张卫','31'] 单元格的值赋值到['张卫','16']
最后再把二维表格还原成表结构。形成最终结果。
model还有很多的语法细节参考oracle官方文档:https://docs.oracle.com/database/121/DWHSG/sqlmodel.htm#DWHSG8771
相关文章推荐
- oracle编程入门笔记2015-01-30--model子句性能
- oracle编程入门笔记2015-01-12--数据库原理1
- oracle编程入门笔记2015-01-13--数据库原理1之硬解析软解析
- oracle model子句学习笔记
- ORACLE MODEL子句学习笔记
- oracle编程入门笔记2015-01-19--表连接
- oracle编程入门笔记2015-01-25--浅说cube
- oracle model子句学习笔记例 解析
- oracle编程入门笔记2015-01-14--查询转换
- oracle编程入门笔记2015-01-19--四种表连接
- oracle编程入门笔记2015-01-18--常用oracle查询语句
- oracle编程入门笔记2015-01-27--分析函数性能
- oracle编程入门笔记2015-01-06--基本概念
- oracle编程入门笔记2015-01-08--查询
- oracle编程入门笔记2015-01-22--解释计划
- ORACLE MODEL子句学习笔记
- oracle编程入门笔记2015-01-09--插入
- oracle编程入门笔记2015-01-12--数据合并
- ORACLE MODEL子句学习笔记
- oracle编程入门笔记2015-01-23--执行计划