GROUP BY์ HAVING์ ์ฐจ์ด
SQL ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ๋, ์์ฑ๋๋ ๊ตฌ๋ฌธ ์์์ ๋ฌ๋ฆฌ DB ์์ง์ด ํด๋น ๊ตฌ๋ฌธ์ ์ฒ๋ฆฌํ๋ ์์์๋ ์ฐจ์ด๊ฐ ์๋ค.
DB์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ค์ ์กฐํํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
์ด๋ค ํ ์ด๋ธ์์ ์ด๋ค ํ ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ์ง ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
๋ถ๋ฌ์ฌ ๋ฐ์ดํฐ์ ์กฐ๊ฑด์ ์ถ๊ฐํด ํํฐ๋งํ๋ค.
ํน์ ๊ธฐ์ค์ด ๋๋ ์นผ๋ผ์ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํํ๋ ์ญํ ์ด๋ค.
๊ทธ๋ฃนํ๋ ๊ฒฐ๊ณผ๋ค ์ค
HAVING์ ์์ฑ๋ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ง ์ถ๋ ฅํ๋ค.
์์ฑ๋๋ ์นผ๋ผ๋ช
์ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๋ค.
ASC๋ ์ค๋ฆ์ฐจ์, DESC๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๋ค.
์ฌ๊ธฐ์์, WHERE๊ณผ HAVING์ ๋ชจ๋ ์กฐ๊ฑด์ ์ง์ ํ๋ ์ด์ด๋,
GROUP BY ์ฌ๋ถ์ ๋ฐ๋ผ ์ฌ์ฉ๋ ์ ์๋ ์ฟผ๋ฆฌ๊ฐ ๋ฌ๋ผ์ง๋ค.
WHERE์ GROUP BY๊ฐ ์์ด๋ ์ฌ์ฉ๋ ์ ์์ง๋ง HAVING์ GROUP BY๊ฐ ์๋ค๋ฉด ์ฌ์ฉ๋ ์ ์๋ค.
โ๏ธ GROUP BY, HAVING, WHERE
๐ก GROUP BY
๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ๋๋ค.
ํ์ ๊ฐ์๊ฐ ๊ทธ๋ฃน์ ํฌํจ๋ ๋งํผ ์ค์ด๋ค๋ฉฐ, ์ง๊ณ ํจ์ ์ฌ์ฉ์ ์ํ ๊ธฐ์ค์ ์ ๊ณตํ๋ ์ญํ ์ ํ๋ค.๐ก HAVING
๊ทธ๋ฃนํ ์ดํ ์คํ๋๋ค.
์กฐ๊ฑด์ ๋ถํฉ๋์ง ์๋ ๊ทธ๋ฃน ์์ฒด๊ฐ ์ฌ๋ผ์ง๋ค.
๊ทธ๋ฃนํ ์ดํ ์คํ๋๋ฏ๋ก ์ง๊ณ ํจ์๋ฅผ ์์ ๋ก์ด ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๊ทธ๋ฅผ ์กฐ๊ฑด์ผ๋ก ์ฌ์ฉํ๋ค.
โก๏ธ GROUP BY๋ ๋จ๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ HAVING์ GROUP BY๊ฐ ์์ด์ผ๋ง ์กด์ฌํ ์ ์๋ค.๐ก WHERE
๊ทธ๋ฃนํ ์ด์ ์ ์คํ๋๋ค.
GROUP BY๊ฐ ์์ด๋ ์ฌ์ฉ๋ ์ ์๋ ๊ธฐ๋ณธ ์ฟผ๋ฆฌ๋ค.
์์ง ๊ทธ๋ฃนํ๋ฅผ ํ๊ธฐ ์ด์ ์ด๋ฏ๋ก ์ง๊ณ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๋ง ๊ทธ๋๋ก ์กด์ฌํ์ง ์๋ ๊ฐ์ด๋ค.
0, '' ์ ๊ฐ์ ๊ฒ์ด ์๋, NULL ๊ฐ ๊ทธ ์์ฒด๋ฅผ ์ผ์ปซ๋๋ค.
NULL์ ๋ฌธ์์ด๋, ์ ์๋ ์ด๋ค ๋ฐ์ดํฐ ํ์
์๋ ํฌํจ๋์ง ์์ผ๋ฏ๋ก ์ด๋ ํ ์ฐ์ฐ์ ์คํํ๋๋ผ๋ NULL ๊ฐ์ ๋ฑ์ด๋ธ๋ค.
ํด๋น ์นผ๋ผ์ ๊ฐ์ด ๋น์ด ์๋(NULL) ํ๋ง ๊ณจ๋ผ๋
๊ฐ์ด ์ฑ์์ ธ ์๋ ํ๋ง ๊ณจ๋ผ๋
ํด๋นํ๋ ์นผ๋ผ ๊ฐ์ด NULL์ผ ๋ ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋์ฒดํด ์ถ๋ ฅํ ์ ์๊ฒ ํด ์ค๋ค.
WHERE IFNULL(phone, '์ฐ๋ฝ์ฒ ์์')
-- ํธ๋ํฐ ๋ฒํธ๊ฐ ์์ผ๋ฉด '์ฐ๋ฝ์ฒ ์์'์ ์ถ๋ ฅํ๋ค.
IF NULL์ ํ์ฅ.
์ธ์๋ค์ ์์๋๋ก ํ๋ค ์ฒ์์ผ๋ก NULL์ด ์๋ ๊ฐ์ ๋ง๋๋ฉด ํด๋น ๊ฐ์ ๋ฐํ
WHERE COALESCE(mobile, home, office, '์ฐ๋ฝ์ฒ ์์')
-- mobile์ด ์์ผ๋ฉด home,
-- home์ด ์์ผ๋ฉด office,
-- office๊ฐ ์์ผ๋ฉด '์ฐ๋ฝ์ฒ ์์'