펑
-1/24 로 조회시 1시간 동안의 자료를 조회하므로 시간별 그룹바이 결과는 1건씩이 나옵니다. a 1건과 b 1건을 조인하면 1:1 관계로 1건이 조회됩니다.
-2/24 로 조회시 2시간 동안의 자료를 조회하므로 시간별 그룹바이 결과는 2건씩이 나옵니다. a 2건과 b 2건을 조인하면 2:2 관계로 카티션곱이 발생하여 4건이 됩니다. 각 데이터가 2배씩 뻥튀기 되는거죠.
WHERE 절이 없이 바로 AND 가 나오는 이유는 뭘까요? 같은 테이블을 두번에 나누어 읽는 의도를 모르겠네요. 그륩바이 항목과 조회항목이 다른 이유는 뭘까요? ("MONDATE" <> "MEASDATE") 전반적으로 쿼리가 이상하네요.
수정 완료하였습니다.
쿼리 만들고 있는데.. 만든거에 수정하려고 하는데,,
빼도 상관없는 건 빼고... 최대한 간결하게 쓰려고 했던 것이 쿼리가 이상하게 되어 버렸네요..
그래서 수정했습니다.
잘 보시면 아시겠지만, 같은 쿼리가 아니예요.
project 컬럼에 NEW 들어가면 data1, data2 에 *3하고, project 컬럼에 NEW 들어가지 않으면 data1, data2의 data를 그대로 쓰는 겁니다.
SELECT SUBSTR(mondate, 1, 8) AS 일자 , SUBSTR(mondate, 9, 2) AS 시간 , SUM(data1 * CASE WHEN project LIKE '%NEW%' THEN 3 ELSE 1 END) AS 합산1 , SUM(data2 * CASE WHEN project LIKE '%NEW%' THEN 3 ELSE 1 END) AS 합산2 , COUNT(*) AS cnt FROM kkk_check WHERE mondate >= TO_CHAR(sysdate-2/24, 'yyyymmddhh24') AND mondate < TO_CHAR(sysdate , 'yyyymmddhh24') GROUP BY SUBSTR(mondate, 1, 8), SUBSTR(mondate, 9, 2) ORDER BY 일자, 시간 ;
오.. 감사합니다.
쉽게 되는군요..