본문 바로가기

알고리즘/SQL

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

문제

풀이 (다른 사람 풀이)

SET @HOUR = -1; 

SELECT (@HOUR := @HOUR + 1) AS HOUR, (SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @HOUR ) AS COUNT 
FROM ANIMAL_OUTS 
WHERE @HOUR < 23;
  • SET 옆에 변수명과 초기값을 설정할 수 있다.
    • @가 붙은 변수는 프로시저가 종료되어도 유지된다.
    • 이를 통해 값을 누적하여 0 ~ 23까지 표현한다.
  • @HOUR은 초기값을 -1로 설정한다. :=은 비교 연산자 =과 혼동을 피하기 위한 대입 연산이다.
  • SELECT(@HOUR := @HOUR +1)은 @HOUR의 값에 1씩 증가시키면서 SELECT문 전체를 실행한다.
  • 처음에 @HOUR 값이 -1 인데 이 식에 의해 +1이 되어 0이 저장된다.
    • HOUR의 값이 0 부터 시작할 수 있다.
    • WHERE @HOUR < 23일 때까지 @HOUR 값이 계속 +1 씩 증가한다.

출처

programmers.co.kr/learn/courses/30/lessons/59413

 

코딩테스트 연습 - 입양 시각 구하기(2)

ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물

programmers.co.kr