TIL : Today I Learn 220414
์ค๋์ DB์ ๋ํด์ ๊ณต๋ถํ๋ค. DB์ ๋ฌธ๋ฒ์ ์ตํ๊ธฐ ์ํด ํ๋ก๊ทธ๋๋จธ์ค์ ์ฝ๋ฉํ ์คํธ ๋ฌธ์ ์ค SQL ๊ณ ๋์ Kit์ SELECT, SUM,MAX,MIN,GROUP BY, IS NULL์ ํ์๋ค. ๊ทธ ์ค GROUP BY์ ๋ง์ง๋ง ๋ฌธ์ ์ธ ์ ์ ์๊ฐ ๊ตฌํ๊ธฐ(2) ๋ฌธ์ ๊ฐ ๋งค์ฐ ์ด๋ ค์ ๋ค. (๋ฐฐ์ฐ์ง ์์ ๋ฌธ๋ฒ์ด ๋ฑ์ฅ!)
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
์ด ๋ฌธ์ ์ ์ ๋ฌธ์ ๋ ์ ์ ์๊ฐ ๊ตฌํ๊ธฐ(1) ๋ฌธ์ ์๋๋ฐ
SELECT HOUR(DATETIME), COUNT(HOUR(DATETIME)) AS 'COUNT'
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME)>=9 AND HOUR(DATETIME)<=19
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME);
์ฌ๊ธฐ์ ์กฐ๊ฑด์ ๋ฌ์์ค ๊ฒ์ฒ๋ผ ์ ์ ์๊ฐ ๊ตฌํ๊ธฐ(2) ๋ฌธ์ ๋ ํ์ดํ๋ ค๊ณ ํ๋ค.
ํ์ง๋ง
์ฃผ์ด์ง TABLE์์ ์กด์ฌํ์ง ์๋ ์๊ฐ๊น์ง ์ถ๋ ฅํด์ผํ๋ค๋ณด๋ ์ค๋ฅ๊ฐ ๋์ ๊ฒฐ๊ตญ ๊ตฌ๊ธ์ ๊ฒ์ํด์ ํ์ด ๋ฐฉ๋ฒ์ ์ตํ๋ค.
๊ทธ๋์ ๋์จ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
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`์ด๋ผ๋ ๋ช ๋ น์ด๊ฐ ๋ฑ์ฅํ๋๋ฐ,
`SET`์ ์ด๋ค ๋ณ์์ ํน์ ๊ฐ์ ํ ๋นํ ๋ ์ฐ๋ ๋ช ๋ น์ด์ด๋ค!
`SET`์ ์ฌ์ฉ์ ์ฃผ์์ ์ด ์๋๋ฐ, SET์ฌ์ฉ์ ๋์ ์ฐ์ฐ์๋ '='๋ฅผ ์ฌ์ฉํ๊ณ ๊ทธ ์ธ์๋ ':='๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
๋ํ @๋ ๋ณ์๋ช ์์ ๋ฃ์ด์ค์ผ ํ๋ค!
๋ฐ๋ผ์,
์ ์ฝ๋์ @HOUR := -1์ HOUR์ -1๋ฅผ ๋ฃ์ด์ค๋ค๋ ์๋ฏธ์ด๊ณ , := ๊ธฐํธ๋ก ๋์
ํด์ฃผ๊ฒ ๋ค๋ ์๋ฏธ๋ฅผ ๊ฐ๋๋ค.
๊ธฐ์กด HOUR ๋ณ์๋ -1์ธ๋ฐ ๊ทธ HOUR๋ณ์๋ฅผ +1๋ก ๋์
ํด๊ฐ๋ฉด์ WHERE์ ์ด 23๋ฏธ๋ง์ผ ๋ ๊น์ง ์ด๋ฅผ ๋ฐ๋ณตํ๋ค.
๊ทธ ๋ค์์ผ๋ก COUNTํ ํ
์ด๋ธ์ ๋ง๋ค์ด ์ค์ผํ๋๋ฐ,
SELECT๋ฌธ์ผ๋ก ANIMAL_OUTํ
์ด๋ธ์์ HOUR(DATETIME)์ด @HOUR๊ณผ ๊ฐ์ ๋ COUNTํด ์ด๋ฅผ ๋ฃ์ด์ค๋ค!
'๐๐จ๐๐๐ฒ ๐ ๐๐๐๐ซ๐ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐๐จ๐๐๐ฒ ๐ ๐๐๐๐ซ๐ง 2022.04.18.์ (0) | 2022.04.18 |
---|---|
๐๐จ๐๐๐ฒ ๐ ๐๐๐๐ซ๐ง 2022.04.15.๊ธ (0) | 2022.04.15 |
๐๐จ๐๐๐ฒ ๐ ๐๐๐๐ซ๐ง 2022.04.13.์ (0) | 2022.04.13 |
๐๐จ๐๐๐ฒ ๐ ๐๐๐๐ซ๐ง 2022.04.12.ํ (0) | 2022.04.12 |
๐๐จ๐๐๐ฒ ๐ ๐๐๐๐ซ๐ง 2022.04.11.์ (0) | 2022.04.11 |
๋๊ธ