Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- 백준문제
- 2212
- 백준
- 백준알고리즘
- IOS도전기
- leetcode329
- IOS도전
- 20164번
- leetcode
- 329
- 홀수홀릭호석
- 329번
- IOS개발기
- 크게만들기
- 릿코드
- 2812번
- BOJ
- stack문제
- 사다리조작
- iOS앱개발
- LongestIncreasingPathinaMatrix
- 리트코드
- iOS개발
- 백죽
- 프로그래머스
- 2212번
- IOS입문
- 센서
- dataframe
- 15684
Archives
- Today
- Total
알고리즘 풀어주는 블로그
[SQL] 입양 시각 구하기(2) (로컬 변수 사용, RECURSIVE) 본문
Q. 문제
https://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
A. 풀이
1) 로컬 변수 이용
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 변수명과 초기값 설정
@변수명 프로시저가 종료되어도 유지됨 (값 누적)
:= 등호. 비교 연산자 ==과 혼동을 피하기 위해 사용
2) RECURSIVE
WITH RECURSIVE HOUR AS(
SELECT 0 AS h # 3번 정리(비반복문)
UNION ALL # 2번 정리(UNION 사용)
SELECT h+1 FROM HOUR WHERE h<23); # 4,5번 정리( HOUR 참조, where 정지조건)
SELECT h AS HOUR, COALESCE(COUNT(ANIMAL_ID),0) AS COUNT
FROM HOUR LEFT JOIN ANIMAL_OUTS ANI ON HOUR.h = HOUR(ANI.DATETIME)
GROUP BY HOUR.h;
'알고리즘 문제 > programmers' 카테고리의 다른 글
| [SQL] 이름이 있는 동물의 아이디 (NOT NULL) (0) | 2021.06.09 |
|---|---|
| [SQL] 이름이 없는 동물의 아이디 (NULL) (0) | 2021.06.09 |
| [SQL] 입양 시각 구하기(1) (HOUR) (0) | 2021.06.08 |
| [SQL] 동명 동물 수 찾기 (HAVING) (0) | 2021.06.08 |
| [SQL] 고양이와 개는 몇 마리 있을까 (GROUP BY) (0) | 2021.06.08 |