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

解决方案 »

  1.   

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

  2.   

    to dreamover(梦醒了〖http://hellfire.cn〗) ( ) 信誉:100    Blog 
       
    我们数据库中的时间字段是精确到毫秒,如果采用group by,那麼每个毫秒都会有一个统计结果,也不便于再次统计呀
      

  3.   

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

  4.   

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

  5.   

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

  6.   

    想问是这个?select tochar(datefield,'yyyy-MM-dd'),type,count(*)
    from table1
    group by tochar(datefield,'yyyy-MM-dd'),type