Allen's 데이터 맛집

프로그래머스 lv. 4 : 입양 시각 구하기(2) 본문

SQL/SQL 문제풀이

프로그래머스 lv. 4 : 입양 시각 구하기(2)

Allen93 2024. 1. 26. 06:14

 

 

문제

 

WITH RECURSIVE hours AS (
    SELECT 0 AS num
    UNION ALL
    SELECT num + 1 FROM hours
    WHERE num < 23
)

SELECT
    hours.num AS hour,
    COUNT(a0.animal_id) AS count
FROM
    hours
LEFT JOIN
    animal_outs AS a0 ON EXTRACT(HOUR FROM a0.datetime) = hours.num
GROUP BY
    hours.num
ORDER BY
    hour;

 

 

풀이

1. WITH RECURSIVE 구문을 사용하여 0부터 23까지의 숫자를 가지는 hours 테이블을 생성합니다. 이를 num이라는 칼럼으로 정의합니다.


2. animal_outs 테이블에서 동물이 나간 날짜 및 시간 정보(datetime)를 기준으로 시간(HOUR)을 추출합니다.


3. 생성한 hours 테이블과 animal_outs 테이블을 LEFT JOIN으로 연결합니다. 이때 EXTRACT(HOUR FROM a0.datetime)는 동물이 나간 시간을 시간대로 변환합니다.


4.각 시간대별로 동물이 나간 횟수를 계산하기 위해 COUNT(a0.animal_id)를 사용합니다.


5. 결과를 시간대(hour)를 기준으로 정렬하여 출력합니다.

 

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr