分析函数中的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 (