Oracle分析函数model使用时需要注意的几个地方(一)

本文探讨了Oracle分析函数中的MODEL特性,强调了在使用中需注意的细节。通过RETUNR UPDATED ROWS语句的解析,展示了其如何影响结果集。此外,针对节点数据处理,特别是具有层级关系的场景,提出了如何确保根节点统计的正确性,以及解决总数与子类合计值不一致的问题。
摘要由CSDN通过智能技术生成

分析函数中的model函数功能强大,对于做数据分析的人来说绝对是一个利器。
我曾经用model函数改写了数十个用存储过程实现的报表取数,一个SQL语句就完全替代了一个上百行代码的存储过程,而且报表口径也完成了统一,这一点在我另外一篇文章中做了详细说明:
基于model函数建设口径统一的统计指标库

虽然model函数很强大,但刚接触的时候还是不免有很多需要留意的地方,一不小心就会发现统计结果与预想的不一样。这里罗列几个方面并给出解决方案:

0.样例数据

--基础数据表
desc T_SALEAMOUNT
Name     Type         Nullable Default Comments 
-------- ------------ -------- ------- -------- 
YEARMON  DATE         Y               年月                    
PRODTYPE VARCHAR2(20) Y               产品类型       
QUANTITY NUMBER(10)   Y               数量   
AMOUNT   NUMBER(12,2) Y               金额       

--样例数据中有3个月的数据
select distinct yearmon from T_SALEAMOUNT order by 1;
YEARMON
-----------
2018/1/1
2018/2/1
2018/3/1

--6种产品类型
select distinct PRODTYPE from T_SALEAMOUNT;
PRODTYPE
--------------------
阳春面
啤酒
蛋炒饭
王老吉
泡饭
饮料

1.RETUNR UPDATED ROWS语句的作用

model后加了这个子句后,会过滤掉原来的所有记录,只留下model组合的数据,比如不加return updated rows的结果如下:

SQL> select * from T_SALEAMOUNT
  2  model
  3  partition by (yearmon)
  4  dimension by (prodtype)
  5  measures (amount)
  6  (
  
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值