主要是时间方面,不知道为什么要进行这样的处理
其中的> <知道什么意思,其他的几个帮忙解释下吧,谢谢
SELECT 
max(CN_P_MGWLOADDATA.collectTime) collectTime,
sum(CN_P_MGWLOADDATA.granularity) granularity,
CN_P_MGWLOADDATA.SERVERID SERVERID,
CN_P_MGWLOADDATA.CNSUBNETID CNSUBNETID,
CN_P_MGWLOADDATA.BUREAUID BUREAUID,
CN_P_MGWLOADDATA.Module Module,
CN_P_MGWLOADDATA.unit unit,
CN_P_MGWLOADDATA.sunit sunit,
MAX(CN_P_MGWLOADDATA.peakUsag )c0
FROM 
CN_P_MGWLOADDATA
WHERE 
CN_P_MGWLOADDATA.collectTime > ? 
AND CN_P_MGWLOADDATA.collectTime <= ? 
AND ( ROUND((CN_P_MGWLOADDATA.collectTime - TRUNC(CN_P_MGWLOADDATA.collectTime))*1440) > 0 
AND ROUND((CN_P_MGWLOADDATA.collectTime - TRUNC(CN_P_MGWLOADDATA.collectTime))*1440) <= 1439
OR ROUND((CN_P_MGWLOADDATA.collectTime - TRUNC(CN_P_MGWLOADDATA.collectTime))*1440) = 0  )
AND CN_P_MGWLOADDATA.granularity <= 300
and CN_P_MGWLOADDATA.BUREAUID='120'
and CN_P_MGWLOADDATA.Module<>'0'
GROUP BY  
TRUNC(((collectTime - TO_DATE('2006-06-01','YYYY-MM-DD')) *86400-granularity+1)/300),
SERVERID,
CNSUBNETID,
BUREAUID,
Module,
unit,
sunit

解决方案 »

  1.   

    ( ROUND((CN_P_MGWLOADDATA.collectTime - TRUNC(CN_P_MGWLOADDATA.collectTime))*1440) > 0 
                AND ROUND((CN_P_MGWLOADDATA.collectTime - TRUNC(CN_P_MGWLOADDATA.collectTime))*1440) <= 1439
                OR ROUND((CN_P_MGWLOADDATA.collectTime - TRUNC(CN_P_MGWLOADDATA.collectTime))*1440) = 0  )这段意思就是两个日期字段时间之间不超过一天的纪录
      

  2.   

    这段其实写复杂了
     abs(ROUND((CN_P_MGWLOADDATA.collectTime - TRUNC(CN_P_MGWLOADDATA.collectTime),2))<=1不就行了
      

  3.   

    应该是
    abs(ROUND((CN_P_MGWLOADDATA.collectTime - TRUNC(CN_P_MGWLOADDATA.collectTime),2)) <1
      

  4.   

    大家再帮忙看看
    TRUNC(((collectTime - TO_DATE('2006-06-01','YYYY-MM-DD')) *86400-granularity+1)/300)
    是什么意思呀?
      

  5.   

    TRUNC(((collectTime - TO_DATE('2006-06-01','YYYY-MM-DD')) *86400-granularity+1)/300) 
    这里就是不知道granularity是什么内容其它的无非就是按5分钟分组
    ((collectTime - TO_DATE('2006-06-01','YYYY-MM-DD')) *86400这个是求两个日期之间相差多少秒
    最后除以300就是5分钟喽