Language/SQL

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

공부좀하시졍 2022. 7. 4. 16:39

SELECT hour(DATETIME) HOUR, count(DATETIME) COUNT
FROM ANIMAL_OUTS
GROUP BY HOUR
ORDER BY HOUR;

위 코드는 잘못된 코드이다.

문제는 0~23시까지 모든 시가 출력되길 원하기 때문이다.


SET 명령어를 사용해야 한다.

  • SET 명령어는 변수에 특정한 값을 넣어줄 때 사용한다.
  • @은 변수명 앞에 써주어야 한다. (ex. @HOUR)
  • :=는 대입 연산자로, SET명령어에서는 =, := 둘다 대입 연산자로 인식된다.
  • SET을 제외한 다른 쿼리문(ex. SELECT)은 '='를 비교연산자로 인식한다.
SET @HOUR = -1;

SELECT (@HOUR := @HOUR + 1) HOUR, 
(SELECT count(DATETIME) COUNT FROM ANIMAL_OUTS WHERE hour(DATETIME) = @HOUR) COUNT
FROM ANIMAL_OUTS
WHERE @HOUR < 23;

 

[실행결과]