꾸물꾸물 졔의 개발공부

[MySQL] 프로그래머스 - 입양 시각 구하기(2) (SET := 변수 선언) 본문

알고리즘/SQL

[MySQL] 프로그래머스 - 입양 시각 구하기(2) (SET := 변수 선언)

체제 2023. 5. 28. 16:13

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

 

프로그래머스

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

programmers.co.kr

 

💡사용자 정의 변수 선언 

SET @변수명 = 변수값; 또는 SET @변수명 := 변수값; 

(둘다 가능하지만, = 는 비교연산자와 헷갈릴 수 있기 때문에 대입연산자로 := 별도 제공) 

 

 

문제

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


 

✔️코드

SET @hour := -1; #변수 선언 

SELECT (@hour := @hour+1) AS HOUR, 
(SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @hour) 
FROM ANIMAL_OUTS
WHERE @hour < 23;
  • 변수명과 초기값 설정 : @hour 의 초기값은 -1이다. 
  • SELECT (@hour := @hour+1) : @hour 값을 1씩 증가시키면서 전체 SELECT 문을 실행한다. 
  • 증가시킨 @hour 값에 포함하는 데이터의 갯수를 count 한다. 
  • WHERE @hour < 23 : @hour 값이 -1 ~ 22 일 때까지 계속 값이 +1 씩 증가한다. 그려면 HOUR은 0~23까지