数据统计问题

yaomin65 2011-06-07 01:49:58
已有充值表和消费表,要求统计每个月的充值卡至今的消费总额。举例如下:
充值表(CZ):
卡号(cardno) 充值次数(times) 充值日期(loddate) 充值金额(lodamt)
91034567 1 2010-2-12 100
91034567 2 2010-5-21 100
91034567 3 2010-9-16 200
91045678 1 2010-3-1 200
91045678 2 2010-3-23 300
91056789 1 2010-2-19 300
。。。。。。
消费表(XF):
卡号(cardno) 消费金额(amt) 消费日期(date)
91034567 40.00 2010-2-15
91034567 60.00 2010-3-26
91034567 100.00 2010-8-11
91034567 160.00 2010-10-3
91045678 120.00 2010-3-1
91045678 80.00 2010-3-5
91045678 220.00 2010-5-15
91056789 278.00 2010-5-2
。。。。。。
统计2月份的数据如下:
消费总额sum(amt)= 378(40+60+278)
。。。。。。

因为卡片可以回收,所以存在一个卡号重复使用(如91034567,第一次2月份充值后全部消费完,第二次5月份充值又使用了),请各位大侠帮助一下,怎么写这个统计语句?

注意两点:
1、不是月度统计,是统计卡片从充值到当前为止的消费,但要考虑回收问题,如果回收后再次充值,则此后的消费计算在下次充值后的消费统计中
2、同一张卡片前后几次充值的金额可以不同
...全文
167 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaomin65 2011-06-13
  • 打赏
  • 举报
回复
我执行了一下,发现westneverwin比tangren的要节省60%的时间,但还是太长啊(90分钟),我在数据库中建立视图和临时表,只要2分钟就能有结果,哪位大侠还有没有更好的方法,明天就结贴
yaomin65 2011-06-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 tangren 的回复:]
加上日期限定
给出执行计划来看一下吧
explain plan for查看执行计划
[/Quote]

是这样的,我们公司从2006年至今已经有大约100万条充值记录和400万条消费记录,现在想统计一下从2006年开始至今每个月的充值卡消费情况,数据表和我给出的例子一样。
我不是专业的,不太明白你说的这个执行计划怎么做
tangren 2011-06-07
  • 打赏
  • 举报
回复
加上日期限定
给出执行计划来看一下吧

explain plan for查看执行计划


westneverwin 2011-06-07
  • 打赏
  • 举报
回复
SELECT 
SUM(B.AMT)
FROM CZ A,XF B
WHERE A.CARDNO = B.CARDNO
AND A.LODDATE <= B."DATE"
AND NOT EXISTS(SELECT 1 FROM CZ C
WHERE C.CARDNO= A.CARDNO AND
C.LODDATE <= B."DATE"
AND C.LODDATE > A.LODDATE)
AND TO_CHAR(LODDATE,'YYYYMM') = '201002'
yaomin65 2011-06-07
  • 打赏
  • 举报
回复
我要求没这么复杂,只想得到的是一个统计脚本,或是统计语句:
只要输入相应的月份,就可以统计这个月的充值卡的消费记录。
select sum(amt) ...where loddate = 要统计的月份
luoyoumou 2011-06-07
  • 打赏
  • 举报
回复
-- 个人觉得应该统计成如下的格式:
卡号 年月 上月期初 上月充值 上月消费 上月结存 本月期初 本月充值 本月消费 本月结存


-- 其中:上月结存 = 本月期初
luoyoumou 2011-06-07
  • 打赏
  • 举报
回复
-- 个人觉得应该统计成如下的格式:
卡号 上月期初 上月充值 上月消费 上月结存 本月期初 本月充值 本月消费 本月结存


-- 其中:上月结存 = 本月期初
yaomin65 2011-06-07
  • 打赏
  • 举报
回复
我考虑从充值记录进行分析:
1、如果存在下一条充值记录,则消费金额等于充值金额
2、如果没有下一条充值记录,再从消费记录中执行累加
这样应该可以提高统计的效率,但我不知道该怎么写这个统计脚本,请各位大侠帮助一下。

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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