ํฐ์คํ ๋ฆฌ ๋ทฐ
ํ๋ก๊ทธ๋๋จธ์ค: SQL - GROUP BY
dirmathfl 2020. 10. 28. 19:21๋ฌธ์
๋ฌธ์ ํ์ด
ํ๋์ ๊ฐ ๋ณ๋ก ๋ฌถ์ด์ ์กฐํํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ `GROUP BY`๋ฅผ ์ฌ์ฉํ๋ค. ๊ฐ ๋ฌธ์ ๋ค์ `GROUP BY`๋ฅผ ํตํด ์กฐํํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๋ฌธ์ ๋ค์ด๋ค.
์ฝ๋
๊ณ ์์ด์ ๊ฐ๋ ๋ช ๋ง๋ฆฌ ์์๊น
SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS COUNT
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE
`GROUP BY`๋ฅผ ํตํด `ANIMAL_TYPE`์ผ๋ก ๊ทธ๋ฃน์ ๋ง๋ค๋ฉด, ๋๋ฌผ ๋ณ๋ก ์นด์ดํธํ ์ ์๋ค.
๋๋ช ๋๋ฌผ ์ ์ฐพ๊ธฐ
SELECT NAME, Count(*) AS COUNT
FROM ANIMAL_INS
WHERE NOT NAME IS NULL
GROUP BY NAME HAVING COUNT > 1
ORDER BY NAME
`GROUP BY`๋ฅผ ํตํด `NAME`์ผ๋ก ๋ฌถ๊ณ , `HAVING`์ ํตํด ์นด์ดํธ๊ฐ 1 ์ด์์ธ ๊ฒฝ์ฐ๊ฐ ๋๋ช ๋๋ฌผ์ ์์ด๋ค.
์ ์ ์๊ฐ ๊ตฌํ๊ธฐ(1)
SELECT HOUR(DATETIME) AS HOUR, COUNT(DATETIME) AS COUNT
FROM ANIMAL_OUTS
WHERE 9 <= HOUR(DATETIME) AND HOUR(DATETIME) < 20
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME)
`HOUR`๋ฅผ ์ฌ์ฉํ๋ฉด ์๊ฐ๋ง ์ถ๋ ฅํ ์ ์๋ค. ์ฌ๊ธฐ์ `WHERE`์ `GROUP BY`๋ฅผ ํตํด ์ํ๋ ์กฐ๊ฑด์ ์ ํํ๋ฉด ๋ฌธ์ ์์ ์ฐพ๊ณ ์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ์ ์๋ค.
์ ์ ์๊ฐ ๊ตฌํ๊ธฐ(2)
SET @hour = -1;
SELECT (@hour := @hour + 1) AS HOUR, (
SELECT COUNT(DATETIME)
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) = @hour
) AS COUNT
FROM ANIMAL_OUTS
WHERE @hour < 23
์ด์ ๊ฐ์ด ๋ณ์๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด, `UNION`, `SELECT`๋ฅผ ๊ณ์ ๋ฐ๋ณตํด์ ์จ์ผ ํ๋ค. ๊ณ ๋ฏผํ๋ค๊ฐ ์ฐพ์๋ณด๋ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑํ๋ฉด ๊น๋ํ๊ฒ ํด๊ฒฐํ ์ ์๋ค.
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค: 2 x n ํ์ผ๋ง (0) | 2020.10.29 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค: ๊ฑฐ์ค๋ฆ๋ (0) | 2020.10.29 |
ํ๋ก๊ทธ๋๋จธ์ค: SQL - String, Date (0) | 2020.10.28 |
ํ๋ก๊ทธ๋๋จธ์ค: SQL - JOIN (0) | 2020.10.28 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ค ์๋ ๋ฐฉ๋ฒ (2) | 2020.10.26 |