以下是表结构数据
st_date            mms_user_receive_success          mms_send_num         send_success_rate
2011-10-13 100                           50           3
2011-12-21 200                           20           2
2011-12-13 100                           20           4
2011-12-14 300                           10           5where条件是:
按小时,日、周,月,6个月内 这几个时间段查询,一个时间段多条记录,sum一个字段的值,一共是四条SQL比如按小时就是where条件0时至6时,6条记录的汇总数,一共6条记录,0条记录也要显示;
同理日、周、月都是这样;
6个月内这个条件是当前时间往前6个月内;其中一个查询,但不对
SELECT  st_date, sum(t.mms_send_num)
  FROM st_group_mms_detail_week t 
ST_DATE >= to_date('2011-9-12', 'yyyy-MM-dd')
and ST_DATE <= to_date('2011-12-30', 'yyyy-MM-dd')
 GROUP BY st_date这样查询出来结果是这样,但我要的数据是每一天只能显示一条汇总记录,要包括where 条件里所有天数,如果为0也要显示一条数据1 2011-10-13 50
2 2011-12-8          20 
3 2011-12-13 20
4 2011-12-14 10不知道说清楚没,呵呵;一共是5条sql,呵呵,不知道我说清楚了没?谢谢各位,在线等...

解决方案 »

  1.   

    就这个date的精确度,不会实现 时  的合计吧
      

  2.   


    select t.st_date 
      from (select to_date('2011-9-12', 'yyyy-MM-dd')+ rownum st_date
             from dual connect by rownum < 200) t
      left join
    (SELECT st_date, sum(t.mms_send_num)
      FROM st_group_mms_detail_week t  
     where ST_DATE >= to_date('2011-9-12', 'yyyy-MM-dd')
       and ST_DATE <= to_date('2011-12-30', 'yyyy-MM-dd')
     GROUP BY st_date) t2
        on t.st_date=t2.st_date
     where t.st_date >= ST_DATE >= to_date('2011-9-12', 'yyyy-MM-dd')
       and t.st_date<=to_date('2011-12-30', 'yyyy-MM-dd')
      
      

  3.   

    需要查询哪几个月的数据 可以构造这几个月的每天日期来联合数据库查询  如:
    查询12月每天的数量  SELECT st_date, sum(t.mms_send_num) st_num 
    FROM st_group_mms_detail_week t1
    right join
    (select to_char(to_date('2011-12', 'YYYY-MM') + rownum - 1, 'YYYY-MM-DD') as st_datefrom dual
                             connect by rownum <= to_number(to_char(last_day(to_date('2011-12', 'YYYY-MM')), 'dd'))) t2  
    on t1.st_date=t2.st_date
    where 1=1
    group by t2.st_date
    order by t2.st_date;
      

  4.   

    我给看错了,其实这样写是对的
    SELECT st_date, sum(t.mms_send_num)
      FROM st_group_mms_detail_week t  
    ST_DATE >= to_date('2011-9-12', 'yyyy-MM-dd')
    and ST_DATE <= to_date('2011-12-30', 'yyyy-MM-dd')
     GROUP BY st_date
    两个13号,只是月不一样。我晕~~
      

  5.   

    没看明白。
    2011-9-12至2011-12-30中间,有109天,15周,4个月,你希望把这些时间分成多少个等次?
    小时的意思我猜是不是这样子的?
    24小时分成四个等次,每6小时一个等次,统计每个等次的SUM值?