db2计算小时之间的差

SELECT AREA,SUM_HOUR AS AQIBBSC,CNT_HOUR AS AQICXBBCS,LONGITUDE,LATITUDE FROM (
SELECT AREA,SUM_HOUR,CNT_HOUR,C.LONGITUDE,C.LATITUDE,
ROW_NUMBER() OVER (PARTITION BY E.AREA ORDER BY E.AREA DESC) AS RN
FROM (
SELECT AREA,CITYCODE,SUM(HOUR_CNT) SUM_HOUR,COUNT(*) CNT_HOUR
FROM (
SELECT AREA,CITYCODE,HOURSDIF,COUNT(*) HOUR_CNT
 FROM (
SELECT AREA,CITYCODE,
HOUR(ATIMEPOINT)-HOUR(BTIMEPOINT) + (DAYS(ATIMEPOINT) - DAYS(BTIMEPOINT)) * 24 -ROWNUM AS HOURSDIF
FROM (
SELECT TIMEPOINT ATIMEPOINT,AREA,CITYCODE,(
SELECT TIMEPOINT
FROM TENV.AIR_CITYHOURAQI_PUBLISH B WHERE AQI >= 500 
AND TO_CHAR(TIMEPOINT,'YYYY-MM') >= '2016-01' AND TO_CHAR(TIMEPOINT,'YYYY-MM') <= '2017-11'
AND B.CITYCODE = A.CITYCODE
AND ROWNUM = 1
) BTIMEPOINT
FROM TENV.AIR_CITYHOURAQI_PUBLISH A
WHERE AQI >= 500 
AND TO_CHAR(TIMEPOINT,'YYYY-MM') >= '2017-03' AND TO_CHAR(TIMEPOINT,'YYYY-MM') <= '2017-05'
AND A.CITYCODE IN ('110000','120000','130100','130200','131000','130600','130900','131100','130500','130400','140100'
,'140300','140400','140500','370100','370300','370800','371400','371500','371600','371700','410100','410200'
,'410500','410600','410700','410800','410900')
)
ORDER BY AREA
)
GROUP BY AREA,CITYCODE,HOURSDIF
HAVING COUNT(HOURSDIF) > 1
) D
GROUP BY AREA,CITYCODE
ORDER BY AREA
) E 
INNER JOIN JCZZ.POINT_INFO C
ON E.CITYCODE = C.CITYCODE
GROUP BY AREA,SUM_HOUR,CNT_HOUR,C.LONGITUDE,C.LATITUDE
)
WHERE RN = 1



















你可能感兴趣的:(db2计算小时之间的差)