MySQL์์ ์ ํ๋ณ๋ก ๊ฐฏ์๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ์๋ฐ, ๋จ์ํ COUNT
ํจ์๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ฉด ์ ์ฒด ๊ฐฏ์๋ง์ ๊ฐ์ ธ์ค๊ฒ ๋๋ค
์ด๋ ๊ฒ ์ ํ๋ณ๋ก ๊ฐฏ์๋ฅผ ์๊ณ ์ถ์ ๋๋ ์ปฌ๋ผ์ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํ ํ ์ ์๋ GROUP BY
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ์ ํ๋ค ๐
GROUP BY๋ฅผ ์ฌ์ฉํ ๋๋ ๋ ๊ฐ์ง๋ฅผ ๊ผญ ๊ธฐ์ตํ๊ธฐ!
GROUP BY
HAVING
WHERE
๋ ๊ทธ๋ฃนํ ํ๊ธฐ ์ ์ ์ฌ์ฉํ๊ณ , HAVING
์ ๊ทธ๋ฃนํ ํ์ ์ฌ์ฉํ๋ค)1. ์ปฌ๋ผ ๊ทธ๋ฃนํ
SELECT
์ปฌ๋ผFROM
ํ ์ด๋ธGROUP BY
๊ทธ๋ฃนํํ ์ปฌ๋ผ;
2. ์กฐ๊ฑด ์ฒ๋ฆฌ ํ์ ์ปฌ๋ผ ๊ทธ๋ฃนํ
SELECT
์ปฌ๋ผFROM
ํ ์ด๋ธWHERE
์กฐ๊ฑด์GROUP BY
๊ทธ๋ฃนํํ ์ปฌ๋ผ;
3. ์ปฌ๋ผ ๊ทธ๋ฃนํ ํ์ ์กฐ๊ฑด ์ฒ๋ฆฌ
SELECT
์ปฌ๋ผFROM
ํ ์ด๋ธGROUP BY
๊ทธ๋ฃนํํ ์ปฌ๋ผHAVING
์กฐ๊ฑด์;
4. ์กฐ๊ฑด ์ฒ๋ฆฌ ํ์ ์ปฌ๋ผ ๊ทธ๋ฃนํ ํ์ ์กฐ๊ฑด ์ฒ๋ฆฌ
SELECT
์ปฌ๋ผFROM
ํ ์ด๋ธWHERE
์กฐ๊ฑด์GROUP BY
๊ทธ๋ฃนํํ ์ปฌ๋ผHAVING
์กฐ๊ฑด์;
5.ORDER BY
๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ
SELECT
์ปฌ๋ผFROM
ํ ์ด๋ธ(WHERE ์กฐ๊ฑด์)
GROUP BY
๊ทธ๋ฃนํํ ์ปฌ๋ผ(HAVING ์กฐ๊ฑด์)
ORDER BY
์ปฌ๋ผ1...;
๐
DISTINCT
&GROUP BY
DISTINCT
: ์ค๋ณต์ ์ ๊ฑฐํ ์ปฌ๋ผ์ด๋ ๋ ์ฝ๋๋ฅผ ์กฐํํ ๋ ์ฌ์ฉ
GROUP BY
: ๊ทธ๋ฃนํํด์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉ
๋ ์์ ์ ๋์ผํ ํํ์ ์์ ์ธ ๊ฒ์ ์ ์ ์๊ณ , ์ผ๋ถ ์์ ์ ๊ฒฝ์ฐ DISTINCT๋ก ๋์์ GROUP BY๋ก๋ ์ฒ๋ฆฌ๋ ์ ์๋ ์ฟผ๋ฆฌ๋ค์ด ์๋ค!
์ฃผ๋ก, ์ง๊ณํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ๊ทธ๋ฃน์ผ๋ก ๊ตฌ๋ถ ํ ๋๋GROUP BY
์ ์ ์ฌ์ฉํ๋ฉฐ, ํน์ ๊ทธ๋ฃน ๊ตฌ๋ถ์์ด ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ ๊ฒฝ์ฐ์๋DISTINCT
์ ์ ์ฌ์ฉ ํ์ !!
์ฐธ๊ณ ์๋ฃ 2
SELECT ANIMAL_TYPE, COUNT(*) FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE;
SELECT NAME, COUNT(*) FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME)>1 ORDER BY NAME;
- ํน์ ๊ทธ๋ฃน์ ๊ทธ๋ฃนํ ํ ํ์ ์กฐ๊ฑด์ ๊ฑธ๊ณ ์ถ์ ๋
HAVING
์ ์ฌ์ฉํจNULL
๊ฐ์ ํฌํจํ์ง ์๋๋ค๊ณ ํ์ผ๋ฏ๋ก,COUNT(*)
๋์COUNT(NAME)
์ด๋ผ๊ณ ์จ์ผ ํ๋ค!
SELECT hour(datetime) as HOUR, count(datetime) as 'COUNT'
FROM ANIMAL_OUTS where hour(datetime) between 9 and 19 group by HOUR order by HOUR;
๋ ์ง ๋ฐ์ดํฐ์์ ์ผ๋ถ๋ง ์ถ์ถํ๊ธฐ
hour(์ปฌ๋ผ๋ช )
: ์๊ฐ๋ง ์ถ์ถํ ์ ์๋ค
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 GROUP BY HOUR ORDER BY HOUR;
๐ ๋ณ์ ์ค์ :
SET
@๋ณ์๋ช = ๊ฐ;
๐ ๋์ ์ฐ์ฐ์ ::=