반응형
-- 코드를 입력하세요
with recursive timetable as (
select 0 as h
union all
select h + 1
from timetable
where h < 23
)
select h, count(HOUR(DATETIME)) as count
from timetable left outer join animal_outs on (h=HOUR(DATETIME))
GROUP BY h
ORDER BY h
# SELECT h, COUNT(HOUR(DATETIME)) AS 'COUNT'
# FROM TIME LEFT OUTER JOIN ANIMAL_OUTS
# ON (h=HOUR(DATETIME))
# GROUP BY h
대략 읽어보니 초기 설정값과 recursive할 쿼리를 union all로 엮는 쿼리같다.
with로 임시 테이블을 생성하고,
1 2 3 4 5 6 |
WITH recursive CTE as( #재귀쿼리 세팅 select 0 as HOUR #초기값 설정 union all #위 쿼리와 아래 쿼리의 값을 연산 select HOUR+1 from CTE #하나씩 불려 나감 where HOUR < 23 #반복을 멈추는 용도 ) Colored by Color Scripter |
cs |
위 임시 테이블을 토대로 LEFT JOIN할 테이블인
ANIMAL_OUTS 테이블을 불러와주었다.
그리고 SELECT로 CTE 테이블의 HOUR와 OUTS 테이블의 HOUR를 카운트해주면 끝!
https://programmers.co.kr/questions/16108
https://velog.io/@cyanred9/SQL-Recursive
https://programmers.co.kr/learn/courses/30/lessons/59413
반응형
'웹 프로그래밍 > SQL' 카테고리의 다른 글
데이터베이스 설정할 때 중복 체크하기 위해서 if exists 문구 넣어주기 (0) | 2021.09.24 |
---|---|
ERROR 2002 (HY000): socket '/tmp/mysql.sock' (2) 해결하려고 brew services start mysql 함 (3) | 2021.09.24 |
[sql] 우유와 요거트 모두 산 사람 찾기 with tmp를 이용해서 품 (0) | 2021.09.15 |
[sql] 해비유저 IN () (0) | 2021.09.15 |
[sql] 프로그래머스 마지막 string, date 풀기 (0) | 2021.09.15 |
[sql] 프로그래머스 이제 join을 공부하자 (0) | 2021.09.15 |
[sql] 프로그래머스 IFNULL(name, "No name") (0) | 2021.09.15 |
[sql] 프로그래머스 name = null (x) name is null (o) (0) | 2021.09.15 |