문제
풀이 (다른 사람 풀이)
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
'알고리즘 > SQL' 카테고리의 다른 글
[프로그래머스] Level 1. 이름이 있는 동물의 아이디 (0) | 2021.02.19 |
---|---|
[프로그래머스] Level 1. 이름이 없는 동물의 아이디 (0) | 2021.02.18 |
[프로그래머스] Level 2. 입양 시각 구하기(1) (0) | 2021.02.16 |
[프로그래머스] Level 2. 동명 동물 수 찾기 (0) | 2021.02.15 |
[프로그래머스] Level 2. 고양이와 개는 몇 마리 있을까 (0) | 2021.02.14 |