通过sql语句怎么查询最近几周的数据

通过sql语句如何查询最近几周的数据现在库里有一张表,这张表记录的是统计数据,里面的字段有id number类型,

通过sql语句如何查询最近几周的数据
现在库里有一张表,这张表记录的是统计数据,里面的字段有id number类型,startdate日期(varchar2),startime开始时间(varchar2),结束时间endtime(varchar2),sendnum发送量(number),如下表:
idstartdatestarttime    endtime sendnum
120131124190000     195959 1000
220131124200000     205959 2000

这张表里记录的是每一天内每个时间段的统计数据,如:2013-11-24这天,记录的数据就是00:00:00-23:59:59内的数据,每个小时统计一次,入一次库。也就是startdate为当天日期,startime为统计开始时间,endtime为统计结束时间。

现在的问题是:要根据这张表,写一个天、周、月、季度的视图。也就是通过天视图查询出这一天的统计数,周视图查询出这一周的统计数,月视图查询出这一个月的统计数,季度视图查询出这一季度的统计数。

请问这个视图该如何来写?主要是周视图,周为自然周。 oracle 视图 统计
[解决办法]
以下是计算20091231为该年的第几周,你可以将你的STARTDATE将其替换后求出每天在改年的周数,然后再对周数进行GROUP BY 求和
SELECT TO_CHAR(DECODE(SIGN((TO_DATE('20091231', 'YYYYMMDD') +
                           TO_NUMBER(DECODE(TO_CHAR(TRUNC(TO_DATE('20091231',
                                                                   'YYYYMMDD'),
                                                           'YYYY'),
                                                     'D'),
                                             '1',
                                             '8',
                                             TO_CHAR(TRUNC(TO_DATE('20091231',
                                                                   'YYYYMMDD'),
                                                           'YYYY'),
                                                     'D'))) - 2) -
                           LAST_DAY(TO_DATE('20091231', 'YYYYMMDD'))),
                      1,
                      LAST_DAY(TO_DATE('20091231', 'YYYYMMDD')),
                      (TO_DATE('20091231', 'YYYYMMDD') +
                      TO_NUMBER(DECODE(TO_CHAR(TRUNC(TO_DATE('20091231',
                                                              'YYYYMMDD'),
                                                      'YYYY'),


                                                'D'),
                                        '1',
                                        '8',
                                        TO_CHAR(TRUNC(TO_DATE('20091231',
                                                              'YYYYMMDD'),
                                                      'YYYY'),
                                                'D'))) - 2)),
               'WW')
  FROM DUAL;
[解决办法]
首先,可以使用to_char函数来获取第几周,星期几
select to_char(sysdate,'WW day') from dual;
然后,有了第几周,就可以用group by来进行统计了
[解决办法]

引用:
首先,可以使用to_char函数来获取第几周,星期几
select to_char(sysdate,'WW day') from dual;
然后,有了第几周,就可以用group by来进行统计了

+1 
to_char(sysdate,'WW') 获取当前时间在一年内的周次。
你的视图用周次group 统计就可以了、