【oracle】MODEL学习笔记(一)


前段时间由于工作的需要对oracle 中的model进行了学习,现在把学习的心得记录下来.

什么是model

利用 SQL MODEL  子句,您可以根据查询结果定义多维数组,然后将规则应用于该数组以计算新值。使用它可以对对SQL的结果集进行处理.

  • MODEL 子句通过将查询列映射到以下三组来定义多维数组:分区列、维度列和度量列。这些元素执行以下任务:
  • 分区(partition by)以类似于分析函数的分区方式来定义结果集的逻辑块。将 MODEL 规则应用于每分区的单元格.
  • 维度(dimension)用于标识分区内的每个度量单元格,可以理解为数组的索引.
  • 度量(measures)类似于星访问数组中的值,我们使用访问数组的方法来访问它.


model的典型应用:

  1. 行列变换
  2. 合计行追加
  3. 行列变换
  4. 使用当前行的前后行
  5. RegExp_Replace函数的循环执行

.......


model语句在sql语句中的执行顺序


它在having之后

 1. from语句
 2. where语句 (结合条件)
 3. start with语句
 4. connect by语句
 5. where语句
 6. group by语句
 7. having语句
 8. model语句
 9. select语句
10. union、minus、intersect等集合演算演算
11. order by语句


model 的优缺点:

model优点:

  • 功能强大.很多原本需要写存储过程实现的功能,一条sql语句就可以实现,可以解决一些较为复杂的问题.
  • 性能较好.
model缺点:
  • 语法复杂与奇怪,刚开始入门感觉别扭,需要一定的学习成本.
  • 代码可读性差.,写出的model语句如果稍微复杂,别人很容易看迷糊(过一段时间本人也可能迷糊).





你可能感兴趣的:(oracle,编程)