Post

๐Ÿ“Ÿ SQL & Database (03) - IF, CASE ์กฐ๊ฑด๋ฌธ



ํ•™์Šตํ™˜๊ฒฝ : Windows, MariaDB, DBeaver

์ˆซ์ž, ๋ฌธ์ž ๋“ฑ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๊ณณ์— ์กฐ๊ฑด์— ๋”ฐ๋ผ ๊ฐ๊ฐ ๋‹ค๋ฅธ ๊ฐ’์„ ๋„ฃ๊ณ  ์‹ถ๋‹ค๋ฉด?
IF(), CASE() ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ด์„œ ์กฐ๊ฑด๋ฌธ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค

IF()

  • ์‚ฌ์šฉ๋ฐฉ๋ฒ•

    IF( ์กฐ๊ฑด์‹,ย ย ์กฐ๊ฑด์‹์ด ์ฐธ์ผ๋•Œ ๊ฐ’,ย ย ์กฐ๊ฑด์‹์ด ๊ฑฐ์ง“์ผ๋•Œ ๊ฐ’ );


  • ์˜ˆ์‹œ ํ…Œ์ด๋ธ”

    image

์ด๋Ÿฐ customer ํ…Œ์ด๋ธ”์ด ์žˆ๋‹ค๊ณ  ํ•  ๋•Œ, ์‚ฌ์šฉ๊ธˆ์•ก์ด 20๋งŒ์› ์ด์ƒ์ธ ๊ณ ๊ฐ์„ โ€˜์šฐ์ˆ˜โ€™,
๊ทธ ์ดํ•˜์ธ ์‚ฌ๋žŒ์„ โ€˜์ผ๋ฐ˜โ€™์ด๋ผ๊ณ  ๋ถ„๋ฅ˜ํ•ด ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด?

1
SELECT ๊ณ ๊ฐ๋ช…, ์‚ฌ์šฉ๊ธˆ์•ก, IF(์‚ฌ์šฉ๊ธˆ์•ก>200000, '์šฐ์ˆ˜', '์ผ๋ฐ˜') FROM customer;

image

๊ฒฐ๊ณผ๊ฐ€ ์ž˜ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค
๊ทธ๋ ‡์ง€๋งŒ 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

image

์ด๋Ÿฐ ์‹์œผ๋กœ ์ง‘๊ณ„ ํ•จ์ˆ˜ ์•ˆ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

This post is licensed under CC BY 4.0 by the author.