๐[ํ๋ก๊ทธ๋๋จธ์ค] ์ ์ ์๊ฐ ๊ตฌํ๊ธฐ(2)
๋ฌธ์ ์ค๋ช
ANIMAL_OUTS ํ ์ด๋ธ์ ๋๋ฌผ ๋ณดํธ์์์ ์ ์ ๋ณด๋ธ ๋๋ฌผ์ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ์ ๋๋ค. ANIMAL_OUTS ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME๋ ๊ฐ๊ฐ ๋๋ฌผ์ ์์ด๋, ์๋ฌผ ์ข , ์ ์์ผ, ์ด๋ฆ, ์ฑ๋ณ ๋ฐ ์ค์ฑํ ์ฌ๋ถ๋ฅผ ๋ํ๋ ๋๋ค.
๋ณดํธ์์์๋ ๋ช ์์ ์ ์์ด ๊ฐ์ฅ ํ๋ฐํ๊ฒ ์ผ์ด๋๋์ง ์์๋ณด๋ ค ํฉ๋๋ค. 0์๋ถํฐ 23์๊น์ง, ๊ฐ ์๊ฐ๋๋ณ๋ก ์ ์์ด ๋ช ๊ฑด์ด๋ ๋ฐ์ํ๋์ง ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๊ฒฐ๊ณผ๋ ์๊ฐ๋ ์์ผ๋ก ์ ๋ ฌํด์ผ ํฉ๋๋ค.
์์
SQL๋ฌธ์ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์์ผ ํฉ๋๋ค.
๋์ ํ์ด
-- ์ฝ๋๋ฅผ ์
๋ ฅํ์ธ์
WITH RECURSIVE BASE AS (
SELECT 0 AS HOUR
UNION ALL
SELECT HOUR+1 FROM BASE
WHERE HOUR < 23
)
SELECT HOUR AS HOUR, COUNT(ANIMAL_ID) AS COUNT FROM BASE LEFT JOIN ANIMAL_OUTS ON BASE.HOUR = HOUR(ANIMAL_OUTS.DATETIME) GROUP BY HOUR ORDER BY HOUR;
WITH RECURSIVE ๊ฐ ์ค์ํ๋ฐ, ํด๋น ๋ฌธ๋ฒ์ ์ฌ๊ท๋ฅผ ์๋ฏธํ๋ค.
์ฆ ๊ฐ์ด 0์ธ ์ปฌ๋ผ๊ณผ 0 ~ 22 ๊น์ง ๋ฐ๋ณตํ๋ฉฐ ์ปฌ๋ผ ์ด๋ฆ์ n+1 ๋ก ๊ฐ๋ ํ ์ด๋ธ์ ์์ฑํ๋ค.
๊ทธ ํ LEFT JOIN์ผ๋ก ์กฐํํ๋ฉด ๋
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐[ํ๋ก๊ทธ๋๋จธ์ค] ์ ์ ์๊ฐ ๊ตฌํ๊ธฐ(2)), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@kwb020312/ํ๋ก๊ทธ๋๋จธ์ค-์ ์-์๊ฐ-๊ตฌํ๊ธฐ2์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค