[프로그래머스] 입양 시각 구하기(2)

2024. 9. 20. 22:50·알고리즘/SQL

 

Question

 

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

 

 

Pseudocode

 

 

  1. 재귀 CTE 정의:
    • WITH RECURSIVE 구문을 사용하여 time이라는 재귀 CTE를 생성합니다.
    • 처음에는 0으로 시작하고, 시간(hour)이 23이 될 때까지 1씩 증가하며 재귀적으로 시간을 생성합니다.
  2. 서브쿼리:
    • ANIMAL_OUTS 테이블에서 DATETIME 컬럼의 시간 부분을 추출하여 hour로 변환합니다.
    • 이 서브쿼리는 동물의 퇴출 시간이 포함된 결과를 제공합니다.
  3. 시간을 기준으로 조인:
    • 재귀적으로 생성된 time CTE와 ANIMAL_OUTS 데이터를 시간(hour)을 기준으로 왼쪽 조인을 합니다.
    • time CTE는 0부터 23까지의 시간을 포함하므로 모든 시간이 보장됩니다.
  4. 그룹화 및 집계:
    • hour로 그룹화하고, 각 시간대별로 animal_id의 개수를 계산합니다.
  5. 정렬:
    • 결과는 시간(hour)을 기준으로 오름차순 정렬됩니다.

 

 

 

Code

 

with recursive time
as (
    select 0 as hour
    union all
    select hour + 1
    from time
    where hour < 23
)

select t.hour, count(animal_id)
from time t left join (
    select *, hour(DATETIME) hour
    from ANIMAL_OUTS 
) o on t.hour = o.hour 
group by t.hour
order by t.hour

'알고리즘 > SQL' 카테고리의 다른 글

[프로그래머스] 조건에 맞는 개발자 찾기  (0) 2024.09.20
[프로그래머스] 특정 세대의 대장균 찾기  (0) 2024.09.20
[프로그래머스] 업그레이드 된 아이템 구하기  (0) 2024.09.20
[프로그래머스] 물고기 종류 별 대어 찾기  (0) 2024.09.20
[프로그래머스] 오프라인/온라인 판매 데이터 통합하기  (0) 2024.09.20
'알고리즘/SQL' 카테고리의 다른 글
  • [프로그래머스] 조건에 맞는 개발자 찾기
  • [프로그래머스] 특정 세대의 대장균 찾기
  • [프로그래머스] 업그레이드 된 아이템 구하기
  • [프로그래머스] 물고기 종류 별 대어 찾기
Noaahhh
Noaahhh
  • Noaahhh
    노아
    Noaahhh
  • 전체
    오늘
    어제
    • 분류 전체보기 (118)
      • 프로젝트 (4)
      • 알고리즘 (113)
        • SQL (108)
        • CP (5)
      • 자격증 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    카카오로그인
    contest395
    집계함수
    SQL
    atcoder
    JPQL
    JWT
    Spring
    어린 동물 찾기
    PS
    spingboot
    cp초보
    querydsl
    cp
    abc421
    pasql
    springboot
    아픈 동물 찾기
    프로그래밍대회
    소셜로그인
    atcoder beginner contest
    ABC
    프로그래머스
    contest397
    코딩테스트
    인증/인가
    PCSQL
    SQL문제
    OAuth2.0
    경쟁적프로그래밍
  • hELLO· Designed By정상우.v4.10.5
Noaahhh
[프로그래머스] 입양 시각 구하기(2)
상단으로

티스토리툴바