drexqq

[Oracle, 오라클] Programmers SQL 고득점 Kit 본문

공부노트/Programmers

[Oracle, 오라클] Programmers SQL 고득점 Kit

drexqq 2020. 6. 24. 11:05
728x90
반응형

SQL 고득점 Kit : GROUP BY

입양 시각 구하기(2)

-- 코드를 입력하세요
SELECT A.HOUR, COUNT(B.DATETIME) AS COUNT
FROM
    (SELECT LEVEL-1 AS HOUR
    FROM DUAL
    CONNECT BY LEVEL <=24) A,
    ANIMAL_OUTS B
WHERE A.HOUR = TO_CHAR(B.DATETIME(+), 'HH24')
GROUP BY A.HOUR
ORDER BY A.HOUR;

시간테이블 A와 입양정보 테이블 B를 HOUR 칼럼을 사용하여 LEFT JOIN해준다.

입양 기록이 없는 시간도 조인 후 남아 있어야하므로 단순히 INNER JOIN이 아닌 LEFT JOIN을 해준다.

조인 후 시간별로 그룹화를 해준 후 시간별로 값이 존재하는 행의 수를 구한다.

이때 COUNT(*)라고 하시면 NULL인 행까지 집계하기 때문에 틀린 답이 된다.

값이 존재하는 경우만 구하기 위해 COUNT(B.DATETIME)이라고 써야 한다.

 

 

728x90
반응형
Comments