SQL查询全年

 SELECT TO_CHAR(T.DA, 'yyyymm') A,TO_CHAR(T.DA, 'Q') QUARTER,TO_CHAR(T.DA, 'W') WEEK,
       MIN(t.da),MAX(t.da) FROM  (SELECT TO_CHAR(T.DA, 'yyyymm') A,TO_CHAR(T.DA, 'Q') QUARTER,TO_CHAR(T.DA, 'W') WEEK,
       t.da,ROW_NUMBER() OVER(PARTITION BY TO_CHAR(T.DA, 'yyyymm'), TO_CHAR(T.DA, 'Q'), TO_CHAR(T.DA, 'W')
        ORDER BY TO_CHAR(T.DA, 'yyyymm'), TO_CHAR(T.DA, 'Q'), TO_CHAR(T.DA, 'W')) sn
  FROM (SELECT TO_DATE('20110101', 'yyyy-mm-dd') + LEVEL - 1 DA FROM DUAL CONNECT BY LEVEL <= 365) T) t
   GROUP BY TO_CHAR(T.DA, 'yyyymm') ,TO_CHAR(T.DA, 'Q'),TO_CHAR(T.DA, 'W')
  ORDER BY TO_CHAR(T.DA, 'yyyymm') ,TO_CHAR(T.DA, 'Q'),TO_CHAR(T.DA, 'W')

 

 

select id, caller
  from (select tt.id,
               tt.caller,
               tt.start_time,
               tt.end_time,
               tt.maxtime,
               tt.unit,
               nvl(ceil(round((TO_DATE(tt.start_time,
                                       'YYYY-MM-DD HH24:MI:SS') -
                              TO_DATE(tt.maxtime, 'YYYY-MM-DD HH24:MI:SS')) * 365 * 24 * 10) / 60),
                   0) mi
          from (select id,
                       caller,
                       start_time,
                       end_time,
                       unit,
                       lag(end_time) over(partition by caller order by id) maxtime
                  from t) tt)
 where mi > 10;

你可能感兴趣的:(数据库,sql,date)