日期:2014-05-16  浏览次数:21030 次

通过sql语句如何查询最近几周的数据
现在库里有一张表,这张表记录的是统计数据,里面的字段有id number类型,startdate日期(varchar2),startime开始时间(varchar2),结束时间endtime(varchar2),sendnum发送量(number),如下表:
id startdate starttime    endtime  sendnum
1 20131124 190000      195959  1000
2 20131124 200000      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',