๐ SQL & Database (03) - IF, CASE ์กฐ๊ฑด๋ฌธ
ํ์ตํ๊ฒฝ : Windows, MariaDB, DBeaver
์ซ์, ๋ฌธ์ ๋ฑ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๋ ๊ณณ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๊ฐ๊ฐ ๋ค๋ฅธ ๊ฐ์ ๋ฃ๊ณ ์ถ๋ค๋ฉด?
IF(), CASE() ๋ฌธ๋ฒ์ ์ฌ์ฉํด์ ์กฐ๊ฑด๋ฌธ์ ์ถ๊ฐํ๋ฉด ๋๋ค
IF()
์ด๋ฐ customer ํ
์ด๋ธ์ด ์๋ค๊ณ ํ ๋, ์ฌ์ฉ๊ธ์ก์ด 20๋ง์ ์ด์์ธ ๊ณ ๊ฐ์ โ์ฐ์โ,
๊ทธ ์ดํ์ธ ์ฌ๋์ โ์ผ๋ฐโ์ด๋ผ๊ณ ๋ถ๋ฅํด ์ถ๋ ฅํ๊ณ ์ถ๋ค๋ฉด?
1
SELECT ๊ณ ๊ฐ๋ช
, ์ฌ์ฉ๊ธ์ก, IF(์ฌ์ฉ๊ธ์ก>200000, '์ฐ์', '์ผ๋ฐ') FROM customer;
๊ฒฐ๊ณผ๊ฐ ์ ๋์ค๋ ๊ฒ์ ๋ณผ ์ ์๋ค
๊ทธ๋ ์ง๋ง IF()์๋ ํ๊ณ์ ์ด ์กด์ฌ
์์ํ์ผ๋ง ๊ฐ๋ฅํ๋ค๋ ๊ฒ. ์์ํ์ผ๊ทน๋จ์ ์ด์ผ~
์ฌ์ฉ๊ธ์ก์ ๋ฐ๋ผ ์ฐ์, ์ผ๋ฐ
์ด ์๋๋ผ ์ฐ์, ์ค์, ์ผ๋ฐ
์ผ๋ก ๋๋๊ณ ์ถ๋ค๋ฉด?
IF๋ ์ฌ์ฉํ์ง ๋ชปํ๋ค.
๊ทธ๋ด๋!
์ด๋ ๊ฒ ๊ฒฝ์ฐ๊ฐ 3๊ฐ ์ด์์ผ ๋๋ CASE()๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
CASE()
์ฌ์ฉ๋ฐฉ๋ฒ
CASEย ย
ย ย ย ย ย ย ย ย WHENย ย ์กฐ๊ฑด์1ย ย THENย ย ๊ฐ1 ย ย
ย ย ย ย ย ย ย ย WHENย ย ์กฐ๊ฑด์2ย ย THENย ย ๊ฐ2 ย ย
ย ย ย ย ย ย ย ย WHENย ย ์กฐ๊ฑด์3ย ย THENย ย ๊ฐ3 ย ย
ย ย ย ย ย ย ย ย ELSEย ย ๊ฐ4ย ย
ENDย ย
์ง๊ณํจ์์๋ ๊ฐ์ด ์ฌ์ฉ ๊ฐ๋ฅํ๋ฐ,
๋ฑ๊ธ์ ๋ฐ๋ผ ๋ค์ด์๋ชฌ๋~๋ธ๋ก ์ฆ ์ผ๋ ์ ์๋ฅผ 5~1์ ์ ๋ถ์ฌํ๊ณ ์ด๋ฅผ ๋ชจ๋ ๋ํ ๊ฐ์ ์ถ๋ ฅํ๊ณ ์ถ๋ค๋ฉด?
1
2
3
4
5
6
7
8
9
10
SELECT SUM(
CASE
WHEN ๊ณ ๊ฐ๋ฑ๊ธ = '๋ค์ด์๋ชฌ๋' THEN 5
WHEN ๊ณ ๊ฐ๋ฑ๊ธ = 'ํ๋ํฐ๋' THEN 4
WHEN ๊ณ ๊ฐ๋ฑ๊ธ = '๊ณจ๋' THEN 3
WHEN ๊ณ ๊ฐ๋ฑ๊ธ = '์ค๋ฒ' THEN 2
ELSE 1
END
) AS ํฉ
FROM customer
์ด๋ฐ ์์ผ๋ก ์ง๊ณ ํจ์ ์์ ์ฌ์ฉํ ์ ์๋ค