GROUP BY ๋?
๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํํ๋ ๊ฒ, ์ฆ ๋ฐ์ดํฐ๋ฅผ ์ง๊ณํ๋ ๊ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์์ ์๋นํ ์ค์ํ ๊ฐ๋ ์ ๋๋ค.
GROUP BY๋ฅผ ์ด๋ค ์์ผ๋ก ์ฌ์ฉํ ์ ์๋์ง ํฌ์คํ ํ๊ฒ ์ต๋๋ค :D
๐ก์ ํ์ ๊ทธ๋ฃนํํด์ผ ํ ๊น์?
์ฐ๋ฆฌ๋ SQL์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํํ ์ ์๋ค๋ ์ ์ ์ธ์งํ๊ณ ์์ต๋๋ค.
๊ทผ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทธ๋ฃนํํด์ผ ํ ๊น์? ์ฐธ๊ณ ๋ก, GROUP BY ์ ์ ์ฃผ๋ก ์ง๊ณ ํจ์์ ๊ฐ์ด ์ฌ์ฉ๋๊ณค ํฉ๋๋ค.
์ง๊ณ ํจ์๋ ์ฌ๋ฌ ํ์ ๊ฐ์ ๋ํ๊ฑฐ๋, ํ๊ท ๊ฐ์ ๋ด๊ฑฐ๋, ๊ฐ์๋ฅผ ์ธ๋ ๋ฑ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ์ ๊ดํ ๊ณ์ฐ์ ํฉ๋๋ค.
๊ฐ์ฅ ๋ํ์ ์ธ ์ง๊ณ ํจ์์๋ ์๋์ ๊ฐ์ต๋๋ค.
1. COUNT() : ํ์ ๊ฐ์๋ฅผ ์ธ์ด์ค
2. AVG() : ํ ์์ ์๋ ๊ฐ์ ํ๊ท ์ ๋ด์ด์ค
3. MIN() : ํ ์์ ์๋ ๊ฐ์ ์ต์๊ฐ์ ๋ฐํํด์ค
4. MAX() : ํ ์์ ์๋ ๊ฐ์ ์ต๋๊ฐ์ ๋ฐํํด์ค
5. SUM() : ํ ์์ ์๋ ๊ฐ์ ํฉ์ ๋ด์ด์ค
# ๊ทธ๋ฃนํจ์
# COUNT()
# SUM()
# AVG()
# MAX()
# MIN()
select * from member;
# ๋ฌธ์ ) memberํ
์ด๋ธ์์ ์ ์ฒด ํ์ ์ ๊ฐ์ ธ์ค๊ธฐ
SELECT COUNT(*) FROM member;
# ๋ฌธ์ ) memberํ
์ด๋ธ์์ ๋จ์ ํ์์ ์ ๊ฐ์ ธ์ค๊ธฐ
SELECT COUNT(*) FROM member WHERE member_gender='m';
# ๋ฌธ์ ) bookํ
์ด๋ธ์์ ์ ์ฒด ๋์ ๊ฐ๊ฒฉ์ ์ดํฉ ๊ฐ์ ธ์ค๊ธฐ
SELECT SUM(book_price) FROM book;
# ๋ฌธ์ ) bookํ
์ด๋ธ์์ ์ ์ฒด ๋์ ๊ฐ๊ฒฉ์ ํ๊ท ๊ฐ์ ธ์ค๊ธฐ
# ์กฐ๊ฑด) ์์์ ์ดํ 2๊ฐ์ง๊น์ง ์ถ๋ ฅ
SELECT AVG(book_price) FROM book;
SELECT ROUND(AVG(book_price), 2) FROM book;
# ๋ฌธ์ ) bookํ
์ด๋ธ์์ ๋์ ๊ฐ๊ฒฉ์ 10%๋ก ์ธ์ํ์ ๋์ ์ดํฉ ๊ฐ์ ธ์ค๊ธฐ
SELECT SUM(book_price), SUM(book_price * 1.1) FROM book;
# ๋ฌธ์ ) bookํ
์ด๋ธ์์ ๋์ ๊ฐ๊ฒฉ์ด ๊ฐ์ฅ ๋์ ๋์๊ฐ๊ฒฉ ๊ฐ์ ธ์ค๊ธฐ
SELECT MAX(book_price) FROM book;
#--------------------------------------------------------------
# GROUP BY(๊ทธ๋ฃนํจ์์ ํจ๊ป ์ฌ์ฉ)
-- GROUP BY ๋ ๋์ ๋ด๋ถ์ ์ผ๋ก ์์ ํ
์ด๋ธ์ ๋ง๋ ๋ค.
-- ์ด๋ ์์ ํ
์ด๋ธ์ ์ปฌ๋ผ์ GROUP BY์ ์ฌ์ฉ๋ ์ปฌ๋ผ๊ณผ
-- SELECT์์ ์ฌ์ฉ๋ ๊ทธ๋ฃนํจ์๊ฐ ๋๋ค.
# ๋ฌธ์ ) memberํ
์ด๋ธ์์ ํ์์ ์๋ฅผ ์ฑ๋ณ๋ก ๊ฐ์ ธ์ค๊ธฐ
SELECT member_gender, COUNT(*) FROM member; -- ์๋ชป๋ ๊ฒฐ๊ณผ ์ถ๋ ฅ
SELECT member_gender, COUNT(*) FROM member GROUP BY member_gender;
# ๋ฌธ์ ) bookํ
์ด๋ธ์์ ๋์ ์ข
๋ฅ๋ณ ๋์ ์๋ ๊ฐ์ ธ์ค๊ธฐ
SELECT book_kind, COUNT(*) FROM book GROUP BY book_kind;
# ๋ฌธ์ ) cartํ
์ด๋ธ์์ ํ์๋ณ๋ก ๊ตฌ์
ํ ์ด ์๋ ๊ฐ์ ธ์ค๊ธฐ
# ์กฐ๊ฑด) ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๊ธฐ
SELECT buyer, SUM(buy_count) FROM cart GROUP BY buyer
ORDER BY SUM(buy_count) DESC;
#--------------------------------------------------------------
# GROUP BY์์ WHERE ๋์ HAVING์ ์ฌ์ฉํด์ผ ํ๋ค.
# ๋ฌธ์ ) cartํ
์ด๋ธ์์ ํ์์ด ๊ตฌ์
ํ ๋์์ ์๋์ด 2๊ฐ ์ด์์ธ ํ์์ id ๊ฐ์ ธ์ค๊ธฐ
SELECT buyer, SUM(buy_count) FROM cart GROUP BY buyer;
SELECT buyer, SUM(buy_count) FROM cart GROUP BY buyer HAVING SUM(buy_count) >= 2;
# ๋ฌธ์ ) bookํ
์ด๋ธ์์ 2015๋
์์ 2019๋
์ฌ์ด์ ์ถ๊ฐํ ๋์ ์ค์ ๊ฐ์๊ฐ 3๊ฐ ์ดํ์ธ ๋์๋ฅผ ์ข
๋ฅ๋ณ๋ก ๊ฐ์ ธ์ค๊ธฐ
SELECT COUNT(*) FROM book
WHERE '2015-01-01' <= book_publishing_date
AND book_publishing_date < '2020-01-01';
SELECT book_kind, COUNT(*) FROM book
WHERE '2015-01-01' <= book_publishing_date
AND book_publishing_date < '2020-01-01'
GROUP BY book_kind;
SELECT book_kind, COUNT(*) FROM book
WHERE '2015-01-01' <= book_publishing_date
AND book_publishing_date < '2020-01-01' and book_count <=3
GROUP BY book_kind;
'DB > MySQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MySQL] CASE ์กฐ๊ฑด๋ฌธ (0) | 2022.03.28 |
---|---|
[MySQL] ๋ฐ์ดํฐ์ ๊ต์งํฉ & ํฉ์งํฉ - JOIN (0) | 2022.03.28 |
[MySQL] ์ซ์, ๋ฌธ์์ด, ๋ ์ง ํจ์ (0) | 2022.03.27 |
[MySQL] ๋ฐ์ดํฐ ์ ๋ ฌํ๊ธฐ - ORDER BY (0) | 2022.03.27 |
[MySQL] ํน์ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ - LIKE (0) | 2022.03.27 |