March 13, 2022
์.์์.๋ด.๋ดํํ
.์.์ด๋ฌ๋.๋ฐ.
์~^^ ๊ทธ๋ด ์ค ์์์ต๋๋ค~^^ ๋ผ๊ณ ๋งํ ์ ์์ ์ ๋๋ก ์ ๋ง ์ ๋ง ๋ง์ด ๋ณด๋ ์๋ฌ์ด๋ค. ๊ทธ๋ฐ๋ฐ ์ด ์๋ฌ ๋๋์ฒด ์ ๋ฐ์ํ๋๊ฑธ๊น?!
GROUP BY๋ ๊ฐ์ ๊ฐ์ ๊ฐ์ง ํ๋ผ๋ฆฌ ํ๋์ ๊ทธ๋ฃน์ผ๋ก ๋ญ์ถฐ์ฃผ๋ ์ญํ ์ ํ๋ค. ์๋์ ์์๋ฅผ ๋ณด๋ฉด ๋ ๋น ๋ฅด๊ฒ ์ดํด๊ฐ ๊ฐ ๊ฒ์ด๋ค.
์ด๋ Employee๋ผ๋ ํ ์ด๋ธ์์ DeptID๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํํด์ Salary์ ํ๊ท ์ ๊ตฌํ๊ฑธ ๋ณด์ฌ์ฃผ๊ณ ์๋ค.
์์ฒ๋ผ ๋ณดํต GROUP BY์ ์ ์ง๊ณ ํจ์์ ๊ฐ์ด ์ฌ์ฉ๋๊ณ ๋ ํ๋๋ฐ, ์ง๊ณ ํจ์๋ ์ฌ๋ฌ ํ์ ๊ฐ์ ๋ํ๊ฑฐ๋, ํ๊ท ๊ฐ์ ๋ด๊ฑฐ๋, ๊ฐ์๋ฅผ ์ธ๋ ๋ฑ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ์ ๊ดํ ๊ณ์ฐ์ ํ๋ค.
์ฃผ๋ก ์ฌ์ฉํ๋ ์ง๊ณ ํจ์์๋ COUNT()
, AVG()
, MIN()
, MAX()
, SUM()
๋ฑ์ด ์๋ค.
์๋์ ๊ฐ์ ํ ์ด๋ธ์ด ์๋ค๊ณ ํ์.
id | name | location | cvs | purchases |
---|---|---|---|---|
1 | KIM | SEOUL | GS25 | 20000 |
2 | LEE | SEOUL | Emart24 | 300 |
3 | PARK | BUSAN | GS25 | 4500 |
4 | CHOI | DAEGU | CU | 90000 |
5 | KANG | BUSAN | Emart24 | 34000 |
6 | YOON | DAEGU | CU | 2400 |
์ฐ๋ฆฌ๋ ํน์ ํธ์์ ์์ ๋ฐ์ํ ๊ตฌ๋งค์ก์ ์ด์ก์ ์๊ณ ์ถ์ ๋, ์ด๋ฐ์์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์ธ ์ ์์ ๊ฒ์ด๋ค.
SELECT location, cvs, SUM(purchases) AS sum
FROM table
GROUP BY cvs;
๊ทธ๋ฐ๋ฐ ์ด๋ฐ ์ฟผ๋ฆฌ๋ก ์คํํ๋ฉด ์๋ฌ๊ฐ ๋ ๊ฒ์ด๋ค.
ERROR: column 'table.location' must appear in the
GROUP BY clause or be used in an aggregate function
์ด๊ฒ ๋จธ..๋จธ์ ์๋ฆฌ๊ณ ..
์์ ์ฟผ๋ฆฌ๋ฅผ ์ ๋ณด์. Select๋ฅผ ํด์ค๋ ์ปฌ๋ผ์ ์ด ์ธ ๊ฐ์ง์ด๋ค. location, cvs, average. ๊ทธ๋ฐ๋ฐ group by ์ ์์๋ cvs๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌถ๋๋ค๊ณ ์ ํ์๊ณ , ๊ฐ์ ์ง๊ณํจ์์ธ SUM()ํจ์๋ฅผ ์ฌ์ฉํด์ ๋ฌถ์ด์ฃผ๊ณ ์๋ค. ๊ทธ๋ฐ๋ฐ location์? ์๋ฌด๊ฒ๋ ์๋ค! ๊ทธ๋ฌ๋๊น ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํผ๋์ด ์จ ๊ฒ์ด๋ค. ์๋โฆ๋ญ๋กโฆ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ด์ฉโฆํ๋ฉด์ ๋ฐํํ ๊ฒ์ด ์์ ์๋ฌ์ด๋ค.
SELECT location, cvs, SUM(purchases) AS sum
FROM table
GROUP BY cvs, location
์ด๋ฐ์์ผ๋ก location๊น์ง ์ถ๊ฐ๋ฅผ ํ๊ฒ ๋๋ฉด, ํธ์์ ๋ณ๋ก, ๋ ์์น๋ณ๋ก ๊ทธ๋ฃนํ์ด ๋ ๊ฒ์ด๋ค.
location | cvs | sum |
---|---|---|
SEOUL | GS25 | 20000 |
SEOUL | Emart24 | 300 |
BUSAN | GS25 | 4500 |
BUSAN | Emart24 | 34000 |
DAEGU | CU | 92400 |
๋ง์ฝ์ location์ด ํ์๊ฐ ์๋ค๋ฉด ์์ ๋๊ฒ๋ ํ๋์ ๋ฐฉ๋ฒ์ด ๋๋ค. ๊ทธ๋ฅ ํธ์์ ๋ณ๋ก ์ด ์ก์ ๊ตฌํ๊ณ ์ถ๋ค๋ฉด, location์ ์์ด๋ดค์ ํ์์๋ ์ ๋ณด๊ฐ ๋ ๋ฟ์ด๋ค.
SELECT cvs, SUM(purchases) AS sum
FROM table
GROUP BY cvs
cvs | sum |
---|---|
GS25 | 24500 |
Emart24 | 34300 |
CU | 92400 |
์๋ฌ์์๋ ๋์ค๋ฏ์ด ์ง๊ณํจ์๋ฅผ ์ฌ์ฉํ ์๋ ์๋ค. COUNT, SUM, AVG ๋ฑ๋ฑ..๋ด๊ฐ ํ์ํ ํจ์๋ฅผ ์ ํ์ฉํด์ ์ฌ์ฉํ๋ค๋ฉด GROUP BY์์ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์ ๊ฒ์ด๋ค.
์๋๋ฉด GROUP BY์ ์ ์ฌ์ฉํ์ง ์๊ณ , window function์ ์ฌ์ฉํ๋ ๊ฒ๋ ํ๋์ ๋ฐฉ๋ฒ์ด ๋๋ค.