一次分析函数的应用

下面是一个网友的问题

问:表test(yyyymmdd,price)

按yyyymmdd--yyyymmdd+3,sum(price)
做统计,sql怎么写?
例如:
20131101--20131103  100
20131102--20131104  105

20131103--20131105  95

于是生成环境及语句如下:

SQL> DROP TABLE TEST PURGE;
Table dropped
SQL> CREATE TABLE TEST AS
  2  SELECT trunc(SYSDATE + LEVEL /2,'dd') AS c1,LEVEL AS c2 FROM dual CONNECT BY LEVEL <=20;
Table created
SQL> DELETE FROM TEST WHERE c2 IN (10,11,12);
3 rows deleted
SQL> SELECT * FROM TEST;
C1                  C2
----------- ----------
2013-11-08           1
2013-11-08           2
2013-11-09           3
2013-11-09           4
2013-11-10           5
2013-11-10           6
2013-11-11           7
2013-11-11           8
2013-11-12           9
2013-11-14          13
2013-11-14          14
2013-11-15          15
2013-11-15          16
2013-11-16          17
2013-11-16          18
2013-11-17          19
2013-11-17          20
17 rows selected
SQL> SELECT c1,
  2         SUM(SUM(c2)) over(ORDER BY c1 RANGE BETWEEN CURRENT ROW AND 2 FOLLOWING) AS t_c2,
  3         SUM(c2) AS t_c3
  4    FROM test
  5   GROUP BY c1
  6   ORDER BY 1;
C1                T_C2       T_C3
----------- ---------- ----------
2013-11-08          21          3
2013-11-09          33          7
2013-11-10          35         11
2013-11-11          24         15
2013-11-12          36          9
2013-11-14          93         27
2013-11-15         105         31
2013-11-16          74         35
2013-11-17          39         39
9 rows selected

SQL> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值