站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题求救减少数据统计的次数方法,大家只要给出思路就有分!!!!!急!急!急!

求救减少数据统计的次数方法,大家只要给出思路就有分!!!!!急!急!急!

摘要: 求救减少数据统计的次数方法,大家只要给出思路就有分!!!!!急!急!急!


我有一个应用需要按照时间段出报表,如我选择日报那麼要按照24小时每小时数据统计一下出报表,如果是周则对每天数据统计出报表,如果是月要对每天数据出报表,这样最简单的查询也要分别统计24次,7次,30次出一张标表,且数据库的记录还是百万级,每次查询都要10分钟以上才能出来结果。我用的是oracle数据库,表中有一列是时间。大家有没有办法,可以让我少做几次统计,运行速度能快一点,拜托了。


mark


不是很懂楼主的意思。


第一个一次取出一天的数据rs,按时间排序,然后在程序里根据时间分别存到集合中.后面的同样的取一次...不知是否可行.


事先进行统计,比如每天凌晨用存储过程把昨日数据按小时、按天都统计好存储到一张中间表中(这时候即使多花点时间也没多大影响)。
页面做报表的时候,从中间表读数据,不需要再去查询了


数据库里另外做几张日报表,周报表,月报表。每天日终在后台做统计,直接把统计结果放对应的报表 表里,查询直接查报表 表里的数据,不再进行单独统计。


要作小时表,天表,周表,和月表,
数据记录在小时表中,每天自动统计到天表里面,每周把数据统计到周表里面,
要查询的时候 直接查对应的表


写个存储过程 ,或则数据库连接用连接池(减轻连接数据库的压力)


我说的不太明白,再补充一下,表中有一列为时间,我要统计不同时间段的纪录数,如1点100条,2点230条等



还有其他条件,如不同部门不同的人权限不同,统计的结果也不同。


在记录集里也可以统计条数啊!


只用一次查询就行了,即日报表的取24小时的数据.
余下就用程序来做,利用层级关系,把每天24小时分组相加得到每天的数据,形成周报表.
再对周报表数据分组求和得到月报表.


事先很难做统计表,因为不同人不同权限看到数据不同,还有一些其他条件是要用户在页面选择的,要把这些都写全,那麼统计表应如何建


当然,最好的方法就是建立日,周,月这些报表,在数据库安排自动任务来作统计.这样效率最好.


楼主好像不知道“group by”是何物?


假设它是一个电话通话记录表,我们要统计不同时间段不同部门,不同人,通话时长可以有由用户设为1,2,3。。。等通话记录数,日报周报月报咋实现减少查询次数或提高查询速度,几百万的数据呀,拜托


to dreamover(梦醒了〖http://hellfire.cn〗) ( ) 信誉:100 Blog

我们数据库中的时间字段是精确到毫秒,如果采用group by,那麼每个毫秒都会有一个统计结果,也不便于再次统计呀


关注

这种多纬度统计的东西,我们一般驳回需求,要求简化的。




象通话时常这样的条件,如何事先确定,不能从1分钟到几小时都枚举一遍吧,拜托



group by to_char(datefield,'yyyy-MM-dd HH24');
group by to_char(datefield,'yyyy-MM-dd');
group by to_char(datefield,'yyyy-MM');



多谢 dreamover(梦醒了〖http://hellfire.cn〗)
我相信你给出的方法,非常好,我去试验,多谢了。
希望大家多给宝贵方法
回来后给分。


to dreamover(梦醒了〖http://hellfire.cn〗)
我想再问一下,每条统计结果中,有好几个统计项,如还有一个呼叫类型,它分为市话,长途等,如果按照两个条件分组,或如何,呼叫类型还有其它好多种,统计中包含的个数不定。再帮忙想一下。


想问是这个?

select tochar(datefield,'yyyy-MM-dd'),type,count(*)
from table1
group by tochar(datefield,'yyyy-MM-dd'),type








↑返回目录
前一篇: 些好的servlet应该放在哪里?
后一篇: 用JavaScript实现三文本框的值相乘并显示到一文本框(Hot,,,,,,,,,,,,,,,,,,,,,,,New)