IF / CASE
Last updated
Last updated
SQL ์ง๋ค ๋ณด๋ฉด ๋ฌธ์๋ ์ซ์๊ฐ์ ๋ฐ์ดํฐ ๋ฃ๋ ๊ณณ์ด ๋ง์ต๋๋ค.
๊ทผ๋ฐ ๊ทธ ๊ณณ์ ๊ณ ์ ๋ ๊ฐ์ด ์๋๋ผ ์กฐ๊ฑด์ ๋ฐ๋ผ์ ๊ฐ๊ฐ ๋ค๋ฅธ ๊ฐ์ ๋ฃ๊ณ ์ถ์ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ฐ๋ฐ ์์ฝ๊ฒ๋ ORACLE์์๋ ์ด๋ ๊ฒ IF๋ฌธ์ ์ฌ์ฉ ํ ์ ์์ต๋๋ค.
(์ ๊ตฌ๋ฌธ์ MySQL์์ ์ฌ์ฉ๊ฐ๋ฅ)
DECODE ํจ์๋ ์ค๋ผํด ์ฟผ๋ฆฌ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ํจ์ ์ค ํ๋์ด๋ค.
ํ์ค SQL ํจ์๊ฐ ์๋๋ผ์ ์ฌ์ฉ์ ๊บผ๋ คํ๊ธฐ๋ ํ์ง๋ง ์ ์ฌ์ฉํ๋ฉด ์์ฃผ ํธํ๊ธฐ ๋๋ฌธ์ ์ ์ฉํ๋ค.
DECODE ํจ์๋ ํ๊ณ๊ฐ ๋ช ํํ๊ณ (ํด๋น์ปฌ๋ผ์ ๊ฐ์ด ํน์ ๊ฐ์ผ ๋๋ง ์ฌ์ฉ ๊ฐ๋ฅ)
๊ฐ๋ ์ฑ๊ณผ ์ฑ๋ฅ ์์ ๋ฌธ์ ๋ก JAVA๋ JavaScript ์ฒ๋ผ ์กฐ๊ฑด์ ์ฃผ๊ณ ์ถ๋ค๋ฉด
CASE WHEN์ ์ฌ์ฉํฉ๋๋ค.
๋ฌธ์๋ ์ซ์๊ฐ์ ๋ฐ์ดํฐ๋ฃ๋ ์๋ฆฌ์ CASE ๋ฌธ๋ฒ์ ๋ฃ์ ์ ์์ต๋๋ค.
CASE ๋ฌธ๋ฒ ์์ ์กฐ๊ฑด์๊ณผ ์กฐ๊ฑด์์ด ๋ง์ผ๋ฉด ๋จ๊ธธ ๊ฐ์ ๋งค์ฐ ๋ง์ด ๋ฃ์ ์ ์์ต๋๋ค.
CASE/END ์ฌ์ด์ WHEN ์กฐ๊ฑด์ THEN ๋จ๊ธธ๊ฐ์ ์ฌ๋ฌ๊ฐ ๋ฃ์ ์ ์๋๋ฐ
์ปดํจํฐ๋ ์กฐ๊ฑด์์ ์์์ ๋ถํฐ ์ฐจ๋ก์ฐจ๋ก ์คํํด๋ณด๋ฉด์
1. ์กฐ๊ฑด์์ ๋ง์ ๊ฒฝ์ฐ 2. ๋จ๊ธธ๊ฐ์ ๊ทธ ์๋ฆฌ์ ๋จ๊ฒจ์ฃผ๊ณ 3. CASE ๋ฌธ๋ฒ์ ์ข ๋ฃํฉ๋๋ค.
์๋ฅผ ๋ค์ด CARD ํ ์ด๋ธ์์
์ฌ์ฉ๊ธ์ก์ด 20๋ง์ ์ด์์ด๋ฉด '์ฐ์๊ณ ๊ฐ๋'
์ฌ์ฉ๊ธ์ก์ด 10~20๋ง์์ด๋ฉด '๊ฑ๊ณ ๊ฐ'
์ฌ์ฉ๊ธ์ก์ด 10๋ง์ ๋ฏธ๋ง์ด๋ฉด '์๋'
์ด๋ ๊ฒ ์ถ๋ ฅํ๊ณ ์ถ๋ค๋ฉด
ELSE ๋ฌธ๋ฒ๋ ๊ฐ์ฅ ๋ง์ง๋ง ์ค์ ์ถ๊ฐํ ์ ์๋๋ฐ
๊ทธ๋ผ ์กฐ๊ฑด์๋ค์ด ์ ๋ถ ๋ง์ง ์์ ๊ฒฝ์ฐ ELSE ์ฐ์ธก์ ์๋ ๊ฐ์ ๋จ๊ฒจ์ค๋๋ค.
์ง๊ณํจ์์ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
Q1. ๋ฑ๊ธ์ด vip์ธ ์ฌ๋๋ค์ 3์ , ๋ก์ด์ด๋ฉด 2์ , ํจ๋ฐ๋ฆฌ๋ฉด 1์ ์ผ๋ก ๊ณ์ฐํด์
๋ชจ๋ ๊ณ ๊ฐ์ ์ ์๋ฅผ ๋ค ๋ํ๋ฉด ๋ช์ ์ผ๊น์?
Q2. card ํ ์ด๋ธ์์ ์ฅ๋ถ๋ฅผ ์กฐ์ํ๋ ค๊ณ ํฉ๋๋ค.
์ฌ์ฉ๊ธ์ก 30๋ง์ ์ด์์ 50% ์ฆ์ก, 30๋ง์ ๋ฏธ๋ง์ 10% ์ฆ์กํด์
์ฌ์ฉ๊ธ์ก์ ์ด ํฉ๊ณ๋ฅผ ์ถ๋ ฅํด๋ด ์๋ค. ๋ต์ 5,147,550๋ก ๋์ค๋ฉด ์ ๋ต์ ๋๋ค.
Q3. ๊ณ ๊ฐ๋ฑ๊ธ์ ์ฌ์ค์ ํ๋ ค๊ณ ํฉ๋๋ค.
์ฌ์ฉ๊ธ์ก์ด 30๋ง์ ์ด์์ 'vip'
20๋ง์ ์ด์ 30๋ง์ ๋ฏธ๋ง์ '๋ก์ด'
๊ทธ ์ธ์ 'ํจ๋ฐ๋ฆฌ'๋ก ๋ค์ ์ค์ ํ๋ ค๊ณ ํฉ๋๋ค.
๊ณ ๊ฐ๋ฑ๊ธ์ด ๋ณ๋๋ ์ด๋ฆ๋ค๋ง ์ถ๋ ฅํด๋ด ์๋ค.