문제링크
보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
https://school.programmers.co.kr/learn/courses/30/lessons/59413#qna
풀이
ANIMAL_OUTS 테이블에는 입양일 컬럼 DATITME 데이터를 보면 0시 부터 23시까지 모든 시간 데이터가 있지 않다
그래서 예시처럼 0시부터23시까지의 데이터를 추출하려면 어떻게 해야할지 고민하다가 정답을 찾지 못하여 구글 검색을 한 결과 오라클 CONNECT BY LEVEL 쿼리를 사용하면 된다는 것을 알게됐다.
CONNECT BY LEVEL 쿼리로 0부터 24까지 데이터가 있는 임시테이블을 만들고
월별로 COUNT를 뽑은 ANIMAL_OUTS 테이블과 아우터 조인을 하였다.
쿼리
SELECT
B.HOUR,
NVL(A.COUNT,0) AS COUNT
FROM
(SELECT
TO_CHAR(DATETIME, 'HH24') AS HOUR,
COUNT(1) AS COUNT
FROM
ANIMAL_OUTS
GROUP BY TO_CHAR(DATETIME, 'HH24')
) A,
(
SELECT LEVEL-1 AS HOUR
FROM DUAL
CONNECT BY LEVEL <= 24
) B
WHERE A.HOUR(+) = B.HOUR
ORDER BY B.HOUR ASC
;
'SQL' 카테고리의 다른 글
[SQL 문제풀이] 년, 월, 성별 별 상품 구매 회원 수 구하기-프로그래머스 (0) | 2023.04.13 |
---|---|
[SQL 문제풀이] 식품분류별 가장 비싼 식품의 정보 조회하기-프로그래머스 (0) | 2023.04.13 |
[SQL 문제풀이] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기-프로그래머스 (0) | 2023.04.12 |
[SQL 문제풀이] 가격이 제일 비싼 식품의 정보 출력하기-프로그래머스 (0) | 2023.04.12 |
[SQL 문제풀이] 가격이 제일 비싼 식품의 정보 출력하기-프로그래머스 (0) | 2023.04.12 |