https://programmers.co.kr/learn/courses/30/lessons/59413

보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.




#1. 시간대별 입양건수 집계하기
-- 코드를 입력하세요
SELECT to_char(datetime,'HH24') as HOUR, count(*)
from animal_outs
group by to_char(datetime,'HH24')
order by 1

이렇게 하면 입양이 없는 시간대는 나타나지 않았다..


#2. 시간대별 데이터 생성하기
00시 부터 23시까지 숫자가 있는 데이터 생성

select to_char('00') + level -1 as hour
from dual
connect by level between 00 and 24




#3. 두 테이블 조인
nvl을 사용해서, a에 데이터가 null 이면, 0으로 치환
b의 시간을 기준으로, a시간 아우터 조인

-- 코드를 입력하세요
select b.hour as hour
,nvl(a.count,0) as count
from (select to_char(datetime,'HH24') as hour
, count(*) as count
from animal_outs
group by to_char(datetime,'HH24')
order by 1
) a
,(select to_char('00') + level -1 as hour
from dual
connect by level between 00 and 24
) b
where b.hour = a.hour(+)
order by 1


+ Recent posts