有一表,内容主要有客户消费情况,如:客户名,消费起始日期,消费终止日期,消费总金额,日均消费额
A , 2005-09-02 , 2005-09-11, 90 , 10
B , 2005-09-05 , 2005-09-10, 100 , 20
C , 2005-09-11 , 2005-09-18, 140 , 20
D , 2005-09-08 , 2005-09-13, 200 , 40
.......最后要计算出
日期 收入
2005-09-02 10=(A)
2005-09-03 10=(A)
2005-09-04 10=(A)
2005-09-05 30=(A+B)
2005-09-06 30=(A+B)
2005-09-07 30=(A+B)
2005-09-08 70=(A+B+D)
2005-09-09 70=(A+B+D)
2005-09-10 .......
......在数据量较大的情况下,用什么样的方法进行计算比较科学有较.用的oracle数据库
A , 2005-09-02 , 2005-09-11, 90 , 10
B , 2005-09-05 , 2005-09-10, 100 , 20
C , 2005-09-11 , 2005-09-18, 140 , 20
D , 2005-09-08 , 2005-09-13, 200 , 40
.......最后要计算出
日期 收入
2005-09-02 10=(A)
2005-09-03 10=(A)
2005-09-04 10=(A)
2005-09-05 30=(A+B)
2005-09-06 30=(A+B)
2005-09-07 30=(A+B)
2005-09-08 70=(A+B+D)
2005-09-09 70=(A+B+D)
2005-09-10 .......
......在数据量较大的情况下,用什么样的方法进行计算比较科学有较.用的oracle数据库
解决方案 »
- 参数问题
- 关于Remote Data Module,请不吝指教,谢谢~!
- 简单问题:Record的常量怎样列出值?
- 完了,裤衩不保,郁闷-_-!!!
- 100分求:一个托盘控件(能让程序最小化在右下角通知区域)在线等待-见到答案,立刻给分
- 关于时间处理问题?在线等待?
- D7的bug真多,我找出的一些bug及解决方法。
- ×××××××××怎样把FLOAT类型的值四舍五入?××××××××××××
- I am a novice,help me please!
- 求教:cnsmin是什么程序?每次启动后都要拨号(window2000)
- 新手问题:我用RMReport设计了一个报表,怎么在一个窗口事件中打印或预览这个报表?比如点击一个按钮等等。请不吝执教。
- 有一段VC++的代码,想改成delphi的,比较简单的,可是改了一点不会了,哪位能帮帮兄弟呀。
你最好能把你的数据发给我,我可以试一下!,QQ:26491405,大家可以讨论一下!
统计的起始日期和终止日期
2.insert into table2 values (统计日期,0)
循环执行,统计日期从起始日期递增到终止日期,生成统计初始记录
3.select sum(日均消费额) from table1 where 统计日期>=消费起始日期 and 统计日期<=消费终止日期
遍历统计表,将每次的SUM结果写入收入字段。
其实一条SQL语句就解决了,还很快,楼上的也不是没有解决,但没有效率,看看下面的,大家也学习一下。SQL> select * from b;客户名 消费起始日期 消费终止日期 消费金额 日均消费额
---------- ------------ ------------ ---------- ----------
A 2005-9-2 2005-9-11 90 10
B 2005-9-5 2005-9-10 100 20
C 2005-9-11 2005-9-18 140 20
D 2005-9-8 2005-9-13 200 40Executed in 0.015 secondsSQL> select i "日期",(select sum((case when b4 <= i and i <=b5 then b3 else 0 end )) from b) as "收入"
from
(select d+r-1 i,d,m from
(select min(b4) d,max(b5) m from b),
(select rownum r from test where rownum <= (select max(b5)-min(b4)+1 from b))
) k
left join b on k.i=b4
order by i日期 收入
----------- ----------
2005-9-2 10
2005-9-3 10
2005-9-4 10
2005-9-5 30
2005-9-6 30
2005-9-7 30
2005-9-8 70
2005-9-9 70
2005-9-10 70
2005-9-11 70
2005-9-12 60
2005-9-13 60
2005-9-14 20
2005-9-15 20
2005-9-16 20
2005-9-17 20
2005-9-18 2017 rows selectedExecuted in 0.046 seconds