반응형
문제 : https://programmers.co.kr/learn/courses/30/lessons/59413
문제 설명
컬럼 명 | 컬럼 정보 |
ANIMAL_OUTS: | 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블 |
ANIMAL_ID | 아이디 |
ANIMAL_TYPE | 생물 종 |
DATETIME | 입양일 |
NAME | 이름 |
SEX_UPON_OUTCOME | 성별 및 중성화 여부 |
0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성
시간대 순으로 정렬
예시
HOURCOUNT
HOUR | COUNT |
0 | 0 |
1 | 0 |
2 | 0 |
3 | 0 |
4 | 0 |
5 | 0 |
6 | 0 |
7 | 3 |
8 | 1 |
9 | 1 |
10 | 2 |
11 | 13 |
12 | 10 |
13 | 14 |
14 | 9 |
15 | 7 |
16 | 10 |
17 | 12 |
18 | 16 |
19 | 2 |
20 | 0 |
21 | 0 |
22 | 0 |
23 | 0 |
제출 코드
-- 코드를 입력하세요
SET @h := -1; -- 변수 선언
SELECT (@h := @h+1) as HOUR, -- 선언한 변수 h를 0부터 시작
(SELECT COUNT(*)
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) = @h) AS COUNT -- COUNT를 h와 같은 것만 출력, 없으면 0개 출력
FROM ANIMAL_OUTS
WHERE @h < 23 -- h를 23시까지
결과 및 정리
기존의 방법으로는 문제를 풀 수 없습니다. 따라서 새롭게 변수를 추가하여 SQL문을 작성해야 합니다
SET : 변수를 선언하는 SQL 문법, @는 프로시저가 종료되어도 유지시켜주는 역할
; (세미콜론)이 있어야 문법 오류가 안납니다.
:= : SQL에서 대입연산자
= : SQL에서 비교연산자
(SELECT COUNT(*)
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) = @h) AS COUNT
부분은 h가 1 증가할 때 마다 1번 실행
반응형
'ProblemSolving > SQL' 카테고리의 다른 글
프로그래머스 SQL (GROUP BY) (0) | 2022.05.13 |
---|---|
프로그래머스 SQL (SUM, MAX, MIN) (0) | 2022.05.13 |
프로그래머스 SQL(JOIN-4) 보호소에서 중성화한 동물 (0) | 2022.04.29 |
프로그래머스 SQL(JOIN-3) 오랜 기간 보호한 동물(1) (0) | 2022.04.29 |
프로그래머스 SQL(JOIN-2) 있었는데요 없었습니다 (0) | 2022.04.29 |