꿈꾸는 개발자의 블로그
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 입양 시각 구하기(2) 본문
Algorithm/Programmers
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 입양 시각 구하기(2)
aldrn29 2023. 2. 21. 17:25문제
보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 1) 각 시간대별로 2) 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
문제 풀이
- 각 시간대 별로 조회하기 위하여 GROUP BY로 묶는다.
- 총 입양 건수를 구하기 위하여 count 함수로 조회한다.
- 0~23까지 CONNECT BY LEVEL 구문으로 순차목록을 만들어 위의 서브쿼리와 LEFT OUTER JOIN 한다. (LEFT OUTER JOIN : 왼쪽에 오는 테이블의 데이터는 모두 조회하고, 오른쪽에 오는 ANIMAL_OUTS 테이블에 입양 시간별 건수가 없는 경우에는 NULL로 JOIN 하기 위함)
- NVL 함수를 사용하여 오른쪽 쿼리에 들어간 NULL 데이터를 0으로 처리한다.
전체 코드
SELECT a.HOUR, NVL(b.COUNT, 0)
FROM (
SELECT LEVEL - 1 AS HOUR
FROM DUAL
CONNECT BY LEVEL < 25
) a LEFT OUTER JOIN (
SELECT TO_NUMBER(TO_CHAR(DATETIME, 'HH24')) AS HOUR, count(*) AS COUNT
FROM ANIMAL_OUTS
GROUP BY TO_CHAR(DATETIME, 'HH24')
) b ON a.HOUR = b.HOUR
ORDER BY 1
728x90
728x90
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] Oracle - (SQL 고득점 Kit) JOIN 조건에 맞는 도서와 저자 리스트 출력하기 (0) | 2023.02.22 |
---|---|
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 가격대 별 상품 개수 구하기 (0) | 2023.02.21 |
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 년, 월, 성별 별 상품 구매 회원 수 구하기 (0) | 2023.02.21 |
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 입양 시각 구하기(1) (0) | 2023.02.21 |
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 동명 동물 수 찾기 (0) | 2023.02.21 |
Comments