3.1 GROUP BY ๋ฌธ
SQL ์ธ์ด๋ ๋งค์ฐ ๊ฐ๋ ฅํฉ๋๋ค. ๊ฐ๋จํ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ์ธ์๋ ์ฟผ๋ฆฌ ์ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฐ ๋ธ๋๋์ ์ ํ ์ข ๋ฅ๋ฅผ ์๊ณ ์ถ์๋ฐ ์ด๋ป๊ฒ ์ ์ ์์ต๋๊น?
this ์ ๋ํ ํน์ ์ฐ์ฐ์๊ฐ ์์ต๋๋ค GROUP BY
. ๋ค์์ ์์ฑ ๋ฐฉ๋ฒ์
๋๋ค.
GROUP BY column
๊ฐ ๋ธ๋๋์ ์ ํ ์ ํ ์๋ฅผ ํ์ํ๋๋ก SQL์ ์์ฒญํ๋ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ฌํ ์์ฒญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
SELECT brand, COUNT(*)
FROM product
GROUP BY brand
๋ค์๊ณผ ๊ฐ์ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค.
์ํ | ์ธ๋ค(*) |
---|---|
(์๋) | 2 |
๋ณด์ฌ | 4 |
์ด์ผ์ | 6 |
์์ง | 2 |
์ค๋งํธํ๋ผ์ | 1 |
์ด๋ค ๋ฆฌํ์คํธ๋ฅผ ์์ฑํ๋์ง, ์ด๋ค ๊ฒฐ๊ณผ๋ฅผ ์ป์๋์ง ๊ผผ๊ผผํ ๋ถ์ํด๋ณด์. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ ๊ฐ์ ์ด์ด ํ์๋ฉ๋๋ค. ๋ธ๋๋ ๋ชฉ๋ก์ด ์๋ ์ฒซ ๋ฒ์งธ ํญ๋ชฉ์ ๋ ผ๋ฆฌ์ ์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ "๋ธ๋๋ --> ์๋" ๊ณผ ๊ฐ์ ๊ฒ์ ์ป๊ณ ์ถ์์ต๋๋ค .
๋ธ๋๋ ์ด๋ฆ ์ค์ ์ด๋ผ๋ ๋จ์ด๊ฐ ์๋ค๋ ์ ์ ์ ์ํ์ญ์์ค NULL
. ์ค์ ๋ก ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ด ์ฐ์ฌ์ง ๋ธ๋๋์ ์ ํ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ NULL
์ฌ๊ธฐ์์ ๋ณผ ์ ์์ต๋๋ค. ์กฐ๊ธ ์์์น ๋ชปํ์ง๋ง ๋์์ด ๋์์ต๋๋ค. ๋ธ๋๋๊ฐ ์๋ ์ ํ์ด ์ผ๋ง๋ ๋ง์์ง ์ ์ ์์ต๋๋ค.
์ด์ ์์ฒญ์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ฐ ๋ธ๋๋์ ์ ํ ์๋ฅผ ์๊ณ ์ถ์ด์ ๋ฅผ ์ผ๊ณ GROUP BY brand
, ์์ ๋ธ๋๋ ์ ํํ์ SELECT
์ผ์ต๋๋ค.COUNT(*)
COUNT(*)
ํ ๊ทธ๋ฃน์์ ์ํ๋๋ ์์ ์ง๊ณ ํจ์์
๋๋ค. ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ๊ทธ๋
๋ ๋จ์ํ ์ซ์๋ฅผ ์ธ์์ต๋๋ค. ๊ทธ๋ฌํ ๊ธฐ๋ฅ์ด ๋ง์ด ์์ผ๋ฉฐ ๋์ค์ ์ดํด ๋ณด๊ฒ ์ต๋๋ค.
3.2 GROUP BY๋ฅผ ์ฌ์ฉํ ๋ณต์กํ ์ฟผ๋ฆฌ
์ด์ ๊ฐ๊ฒฉ์ด 10 ๋ฏธ๋ง์ธ ์ ํ์ ๋จผ์ ๋ฒ๋ฆฌ๊ณ ๊ทธ๋ฃนํํ๋ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ฌํ ์์ฒญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
SELECT brand, COUNT(*)
FROM product
WHERE price > 10
GROUP BY brand
๋ค์๊ณผ ๊ฐ์ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค.
์ํ | ์ธ๋ค(*) |
---|---|
๋ณด์ฌ | 4 |
์ด์ผ์ | 5 |
์์ง | 2 |
์ค๋งํธํ๋ผ์ | 1 |
NULL ์ ํ์ด ๋งค์ฐ ์ ๋ ดํ๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ณผ ํ ์ด๋ธ์์ ๋ชจ๋ NULL ์ ํ์ด ์ฌ๋ผ์ก๊ณ IKEA ์ ํ ์๊ฐ 1๊ฐ ๊ฐ์ํ์ต๋๋ค. 6๊ฐ์์ 5๊ฐ๋ก.
์ด๊ฒ์ ๋จผ์ ์ํ๋ ๋ผ์ธ์ ํํฐ์ ์ ์ฉํ WHERE
๋ค์ ๊ทธ๋ฃนํ๋ฅผ ๊ฒฐ๊ณผ์ ์ ์ฉํ๋ ๊ฒ์ ์ ์ํฉ๋๋ค.
3.3 ๊ฒฐ๊ณผ์ ์ด ์ด๋ฆ
๊ทธ๋ฐ๋ฐ ๊ฒฐ๊ณผ ์ด์ ์ด๋ฆ์ ์ง์ ํ ์ ์์ต๋๋ค. ์๋ฒ๊ฐ ์ด๋ป๊ฒ ์ด๋ฆ์ ์ ์ํ๋์ง ๋ณด์ญ๋๊น count(*)
? ํฉ๊ณ๋ก ๋ฐ๊พธ๊ฒ ์ต๋๋ค. ์ด๋ฌํ ์์ฒญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
SELECT brand, COUNT(*) AS total
FROM product
WHERE price > 10
GROUP BY brand
๋ค์๊ณผ ๊ฐ์ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค.
์ํ | ์ด |
---|---|
๋ณด์ฌ | 4 |
์ด์ผ์ | 5 |
์์ง | 2 |
์ค๋งํธํ๋ผ์ | 1 |
๊ธฐ์กด ์ด์ ์ด๋ฆ์ ๋ฐ๊ฟ ์๋ ์์ต๋๋ค. ์ด์ ์ ์ฌ์ฉํ ์ฟผ๋ฆฌ ์ค ํ๋๋ฅผ ์ ํํ๊ณ ์ด์ ์ ์ด๋ฆ์ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
SELECT
id AS product_id,
name AS product_name,
price
FROM product
WHERE price < 20 AND brand IS NOT NULL
๋ค์๊ณผ ๊ฐ์ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค.
์ ํ ID | ์ํ๋ช | ๊ฐ๊ฒฉ |
---|---|---|
2 | ์์ | 5.00 |
8 | ๋จํ | 15.00 |
GO TO FULL VERSION