๐ฑ ๋ฌธ์
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
0์๋ถํฐ 23์๊น์ง, ๊ฐ ์๊ฐ๋๋ณ๋ก ๋ฐ์ํ ์ ์ ๊ฑด์๋ฅผ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํ์ธ์.
๐ฑ ํ์ด
1. ๋ณ์ ์ค์
์ด ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด์๋ ๋ณ์๋ฅผ ํ๋ ๋ง๋ค์ด์ผ ํฉ๋๋ค. MySQL์์ ๋ณ์๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. SET @[๋ณ์๋ช
] := [์ด๊ธฐ๊ฐ];
์ฐ์ฐ์๋ฅผ ์จ๋ ๋์ง๋ง ๋น๊ต์ฐ์ฐ(๊ฐ๋ค)๊ณผ ๊ตฌ๋ถํ๊ธฐ ์ํด์
=:=
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
SET @hour := -1;
SELECT (@hour := @hour + 1) AS 'HOUR'
FROM ANIMAL_OUTS
WHERE @hour < 23;
์์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ต๋๋ค.
2. ์๋ธ ์ฟผ๋ฆฌ
(SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @hour) AS COUNT
์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ด์ฉํด์ ์์์ ์ค์ ํ @hour
๋ณ์๊ฐ 0์ผ๋๋ถํฐ 23์ผ ๋๊น์ง์ ๊ฐ row๋ฅผ ์นด์ดํธํ ๊ฐ์ COUNT
์ปฌ๋ผ ๊ฐ์ผ๋ก SELECT ํฉ๋๋ค.
๐ฑ ์ฟผ๋ฆฌ
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;
๋๊ธ