https://school.programmers.co.kr/learn/courses/30/lessons/59413
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
group by 로 간단하게 묶으면 될 것같지만, 조건에는 집계 결과가 0인 시간대도 출력해야 함
이를 위해 with recursive 재귀 쿼리를 사용
0 부터 1까지의 시간대별 데이터를 가진 hour 테이블을 animal_outs 테이블과 outer join
with recursive hourrange AS (
select 0 AS hour
union ALL
select hour + 1
from hourrange
where hour < 23
)
select h.hour, count(animal_id)
from hourrange as h left outer join animal_outs as a
on h.hour = hour(a.datetime)
group by h.hour
order by h.hour;
'코딩테스트 > 문제풀이' 카테고리의 다른 글
[프로그래머스] 가격대 별 상품 개수 구하기 SQL (0) | 2023.10.03 |
---|---|
[프로그래머스] 자동차 대여 기록 별 대여 금액 구하기 SQL (0) | 2023.10.03 |
[프로그래머스] 년, 월, 성별 별 상품 구매 회원 수 구하기 SQL (0) | 2023.10.01 |
[프로그래머스] 우유와 요거트가 담긴 장바구니 SQL (0) | 2023.09.26 |
[프로그래머스] 자동차 평균 대여 기간 구하기 SQL (0) | 2023.09.26 |