본문 바로가기
알고리즘 공부/sql

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

by 지금갑시다 2024. 2. 28.

 

 

문제

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

 

프로그래머스

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

programmers.co.kr

 

 

해석

  • 입양시각 별로 그루핑을 해주는 것을 group by 를 활용
  • group by 를 hour 별로 묶어주고, id를 count 해주면 되겠지?
select date_format(datetime, "%H") as hour, count(animal_id) as count
from animal_outs
group by date_format(datetime, "%H")
order by hour

 

그러나 위와 같이 푸는 것은 아예 임의의 시각에 입양 온 동물이 없다면, column을 만들어 줄 수가 없다.

 

따라서, SET 이라는 새로운 키워드를 배운다.

 

 

정답

set @hour = -1;

select (@hour := @hour + 1) as hour,
(
select count(animal_id) 
from animal_outs
where @hour = hour(datetime)
) as count
from animal_outs
where @hour < 23

 

@hour 변수를 할당하고, 해당 변수를 활용해 반복문을 도는 것처럼 활용한다.

 

해도해도 알아야 할 것들이 계속 나옴,,ㅎ

 

 

끗!