ํ๋ก๊ทธ๋๋ฐ ์ธ๊ณ๋ฅผ ํ๊ตฌํฉ์๋ค.
[ ๊ทธ๋ฃน ํจ์ ]
- count() : ํ์ ๊ฐฏ์
- avg() : ํ๊ท
- max() : ์ต๋๊ฐ
- min() : ์ต์๊ฐ
- sum() : ํฉ๊ณ
-- ์ผ๋ฐ ์กฐ๊ฑด : Where์ ์ฌ์ฉ
-- ๊ทธ๋ฃน์ ๋ํ ์กฐ๊ฑด : Group By ~ Having ์ ์ฌ์ฉ
-- Group By ์ : ๊ทธ๋ฃน์ผ๋ก ๋ฌถ๊ณ ์ ํ๋ ์ปฌ๋ผ๋ช
or ์ผ๋ฐํจ์๋ฅผ ์ฒ๋ฆฌํ ์ปฌ๋ผ ์ง์
-- Having์
-- : ๊ทธ๋ฃนํจ์๋ฅผ ์ด์ฉํ ์กฐ๊ฑด(๋น๊ต ์ฐ์ฐ์) ์ฌ์ฉ
-- : ๊ทธ๋ฃน ์กฐ๊ฑด์ด ์์ผ๋ฉด Having์ ์ ์ฌ์ฉ ์ ํด๋ ๋จ
-- (Group By ์ ๋ง ์ฌ์ฉ ๊ฐ๋ฅ)
-- ๊ทธ๋ฃน์ ๋ํ ๋ฌธ์ ๋ก ์ธ์ํ๋ ๋ฐฉ๋ฒ
-- : ~๋ณ๋ก ์กฐํ ๋ผ๋ ๊ฐ๋
์ ์ฉ์ด๊ฐ ์ฌ์ฉ๋๋ฉด Group By๋ฅผ ์ฌ์ฉ
<์ฒ๋ฆฌ ์์>
1. Select
2. FROM ํ
์ด๋ธ
3. WHERE ~ And
4. GROUP by
5. Having
6. SELECT ๋ค์ ์ปฌ๋ผ๋ค
7. ORDER By
<SQL ์์ฑ>
Select ์ปฌ๋ผ๋ค
From ํ
์ด๋ธ
Where ์ผ๋ฐ์กฐ๊ฑด
And ์ผ๋ฐ์กฐ๊ฑด
Group By ๊ทธ๋ฃน์ปฌ๋ผ
Having ๊ทธ๋ฃน์กฐ๊ฑด
Order By ์ ๋ ฌํ ์ปฌ๋ผ๋ค
<Group By๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ท์น>
- Group By ์ ์ ์ ์๋ ์ปฌ๋ผ๋ค์ ์ํ ๊ทธ๋๋ก ์กฐํํ ์ปฌ๋ผ์ ์ ์
- Select ์ ๋ค์ ์ปฌ๋ผ ๋๋ ์ผ๋ฐํจ์๋ฅผ ์ด์ฉํด์ ์กฐํํ๊ณ ์ ํ๋ ์ปฌ๋ผ๋ค์
Group By ์ ์ ์ํ ๊ทธ๋๋ก ์ ์๊ฐ ๋์ด ์์ด์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ (์์น ์)
- ์ปฌ๋ผ ๋ค์ ๋ณ์นญ(as)๋ Group By ์ ์๋ ์ฌ์ฉํ๋ฉด ์ค๋ฅ ๋ฐ์(์์น ์)
[ ์กฐ๊ฑด ]
-- ํ์ ์ทจ๋ฏธ๋ณ๋ก count ํ๊ธฐ
[ ์์ฑ ์ฝ๋ ]
-- ํ์ ์ทจ๋ฏธ๋ณ๋ก count ํ๊ธฐ
SELECT mem_like, count(nvl(mem_like,0)) AS cnt_like
FROM member
-- ๊ทธ๋ฃนํํ ์ปฌ๋ผ ์ง์
-- group by์ ์ง์ ํ ์ปฌ๋ผ or ์ผ๋ฐํจ์๋ฅผ ์ด์ฉํ ๊ฒฝ์ฐ,
-- : select์ ์ ์์์ ๋ฃ์ด์ฃผ๊ธฐ
GROUP BY mem_like;
[ ๊ฒฐ๊ณผ ]
[ ์กฐ๊ฑด ]
-- [๋ฌธ์ ]
-- ํ์์ ์ฑ๋ณ count๊ฐ์ ์กฐํํด ์ฃผ์ธ์
-- ์กฐํ ์ปฌ๋ผ : ํ์์ฑ๋ณ, count๊ฐ ์กฐํํ๊ธฐ
[ ์์ฑ ์ฝ๋ ]
-- [๋ฌธ์ ]
-- ํ์์ ์ฑ๋ณ count๊ฐ์ ์กฐํํด ์ฃผ์ธ์
-- ์กฐํ ์ปฌ๋ผ : ํ์์ฑ๋ณ, count๊ฐ ์กฐํํ๊ธฐ
SELECT if(MOD(SUBSTRING(mem_regno2, 1, 1), 2)>0, '๋จ', '์ฌ') AS ํ์์ฑ๋ณ,
count(if(MOD(SUBSTRING(mem_regno2, 1, 1), 2)>0, '๋จ', '์ฌ')) AS ์ซ์
FROM member
GROUP BY if(MOD(SUBSTRING(mem_regno2, 1, 1), 2)>0, '๋จ', '์ฌ');
SELECT if(MOD(SUBSTRING(mem_regno2, 1, 1), 2)>0, '๋จ', '์ฌ') AS ํ์์ฑ๋ณ,
COUNT(mem_regno2) AS cnt
FROM member
GROUP BY SUBSTRING(mem_regno2, 1, 1)
ORDER BY cnt DESC;
[ ๊ฒฐ๊ณผ ]
[ ์กฐ๊ฑด ]
-- [๋ฌธ์ ]
-- cart ํ
์ด๋ธ์ ์ด์ฉํด์ ํ์๋ณ๋ก count ํด์ฃผ์ธ์, ์ต๋๊ฐ, ํฉ์ฐ
[ ์์ฑ ์ฝ๋ ]
SELECT Cart_member, count(*) AS COUNT, MAX(cart_qty) AS max_qty,
SUM(cart_qty) AS sum_qty
FROM cart
GROUP BY Cart_member;
[ ๊ฒฐ๊ณผ ]
[ ์กฐ๊ฑด ]
-- [๋ฌธ์ ]
-- ์์ ํ์์ด 2005๋
4์ 1์ผ์ ์ํ ํ๋๋ฅผ ๊ตฌ๋งคํ์ต๋๋ค.
-- ์ฃผ๋ฌธ๋ฒํธ๋ฅผ ๋ฐ๊ธํด์ผํด์
-- ์ ๊ท ์ฃผ๋ฌธ๋ฒํธ๋ง ์กฐํํด ์ฃผ์ธ์
[ ์์ฑ ์ฝ๋ ]
-- [๋ฌธ์ ]
-- ์์ ํ์์ด 2005๋
4์ 1์ผ์ ์ํ ํ๋๋ฅผ ๊ตฌ๋งคํ์ต๋๋ค.
-- ์ฃผ๋ฌธ๋ฒํธ๋ฅผ ๋ฐ๊ธํด์ผํด์
-- ์ ๊ท ์ฃผ๋ฌธ๋ฒํธ๋ง ์กฐํํด ์ฃผ์ธ์
[ ๊ฒฐ๊ณผ ]
[ ์กฐ๊ฑด ]
-- [๋ฌธ์ ]
-- ์ํํ
์ด๋ธ์์
-- ์ํ๋ถ๋ฅ๋ณ๋ก ์ํ์ ๊ฐฏ์๋ฅผ ์ง๊ณํด์ฃผ์ธ์
-- ์กฐํ์ปฌ๋ผ์ ์์ ๋กญ๊ฒ
[ ์์ฑ ์ฝ๋ ]
SELECT Prod_lgu, COUNT(prod_id) AS cnt
FROM prod
GROUP BY Prod_lgu;
[ ๊ฒฐ๊ณผ ]