본문 바로가기
🛠️Skill/CodingTest

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

by Istj_eff 2022. 11. 21.

문제

제출한 코드

SELECT HOUR(datetime) H, COUNT(datetime) 'COUNT'
FROM animal_outs
GROUP BY H
HAVING H BETWEEN 0 AND 23
ORDER BY H

-- 오답

 


정답 코드

문제에서 0시에서 23시까지 조회하라고 했지만 데이터상 0~6시는 없으므로 SET문으로 0~23시 테이블을 만들어줘야한다.

# 0~23 테이블 만들기
SET @HOUR = -1;
SELECT (@HOUR := @HOUR +1) AS HOUR
FROM animal_outs
WHERE @HOUR < 23;

<SET>

  1. @변수명 = 넣어줄 값
    @HOUR = -1  : HOUR 변수에 -1 넣기

  2. :=  대입하기
    @HOUR에 +1 씩 대입하기 → 0, 1, 2, 3..

  3. WHERE 절로 조건걸어서 @HOUR 변수에 23전까지만 +1 대입하기
    즉, 22에서 +1 넣고 끝내라 (=23)

 이렇게 0~23 테이블 생성

 

# 정답코드

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

나머지 생략

댓글