求一oracle数据库中统计计算方法

tanqth 2005-09-12 11:41:44
有一表,内容主要有客户消费情况,如:

客户名,消费起始日期,消费终止日期,消费总金额,日均消费额
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数据库
...全文
143 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
knife_s 2005-09-22
  • 打赏
  • 举报
回复
呵呵,是挺不错的,学习一下
tanqth 2005-09-21
  • 打赏
  • 举报
回复
其实都没有一个好方法;但我已得到一个解决方法,还是谢谢大家。
其实一条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 40

Executed in 0.015 seconds

SQL> 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 20

17 rows selected

Executed in 0.046 seconds

windy2000 2005-09-16
  • 打赏
  • 举报
回复
1.select min(消费起始日期),max(消费终止日期) FROM table1
统计的起始日期和终止日期
2.insert into table2 values (统计日期,0)
循环执行,统计日期从起始日期递增到终止日期,生成统计初始记录
3.select sum(日均消费额) from table1 where 统计日期>=消费起始日期 and 统计日期<=消费终止日期

遍历统计表,将每次的SUM结果写入收入字段。
tanqth 2005-09-13
  • 打赏
  • 举报
回复
有高手没有
wjwboy 2005-09-13
  • 打赏
  • 举报
回复
建一个表tj(从2005-01-01到2005-12-31,一天是一条记录),你用游标取你那个表的数据,更新tj表中的值,(update tj set 收入=收入+日消费 where 日期>=消费起始日期 and 日期<=消费终止日期)
你最好能把你的数据发给我,我可以试一下!我的邮箱:wjwboy2000@163.com,QQ:26491405,大家可以讨论一下!

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧