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

Eunding·2024년 2월 21일
0

SQL 고득점 Kit

목록 보기
37/62

입양 시각 구하기(2)

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

문제

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

예시

풀이

SET @HOUR = -1;
SELECT (@HOUR := @HOUR+1) AS HOUR, 
    ( SELECT COUNT(HOUR(DATETIME))
     FROM ANIMAL_OUTS
    WHERE HOUR(DATETIME)=@HOUR) AS COUNT
FROM ANIMAL_OUTS
WHERE @HOUR < 23
ORDER BY HOUR

처음보는 문법을 사용했다...
참고한 블로그
참고한 블로그2

  1. SET을 이용하여 @HOUR라는 변수를 -1로 초기화
  2. @HOUR에 1씩 더하면서 WHERE절로 @HOUR < 23 범위를 지정해준다.
    (이유 : 1씩 더하기 때문에 @HOUR가 22여야 1더해서 23이 됨)
    (SET을 사용할 때는 처음 선언할 때만 '='을 쓰고 그 이후에는 ':='을 쓴다고 한다.)
  3. 서브쿼리로 시간마다 동물을 카운트 해준다.
    (이때 HOUR는 0~23 범위를 1씩 증가하면서 진행하는데 HOUR(DATETIME)에 맞는 시간이 있으면 카운트 해주고 없으면 0이 되는 방식)

다시 한 번 풀어봐야하는 문제이다


배운 점

SET 공식문서

기본 구조

SET variable_name = value;
  • variable_name: 변수의 이름을 지정, 변수 이름은 '@' 기호로 시작(MySQL일때)
  • value: 변수에 할당할 값

ex) result : 50

SET @x = 10;
SELECT @x * 5 AS result;
  • 새로운 변수를 할당해줄 수 있음
  • 초기화할 때는 '='을 쓰고 그 이후에는 ':=' 이용
  • MySQL에서 변수는 '@'로 시작한다.
profile
안녕하세요~

0개의 댓글

관련 채용 정보