#DECODE CASE

๊น€์œ ๋ฏธยท2021๋…„ 12์›” 20์ผ
0

2021.12.21 ๐Ÿ”†๋ง‘์Œ

ํ”„๋กค๋กœ๊ทธ

์˜ค๋Š˜์€ SELECT์— WHERE ์ด์™ธ์— ์กฐ๊ฑด์„ ์ง‘์–ด ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด๋ฌธ ๋ช…๋ น์–ด DECODE์™€ CASE์— ๋Œ€ํ•ด ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.

DECODE

  • ๋™๋“ฑ(=)์กฐ๊ฑด์ผ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜
  • ๋ฌธ๋ฒ•
    • DECODE(A, B, true, false) : A=B ์ด๋ฉด true Aโ‰ B ์ด๋ฉด false
    • DECODE(A, B, B_true, C, C_true , false) :
      -- A=B ์ด๋ฉด B_true
      -- A=C ์ด๋ฉด C_true
      -- Aโ‰ B, Aโ‰ C ์ด๋ฉด false
    • DECODE(A, B, DECODE(A2, B2, B2_true), B_false)
      -- A=B ์ด๋ฉด์„œ A2=B2 ์ด๋ฉด B2_true
      -- A=B ์ด๋ฉด์„œ A2โ‰ B2 ์ด๋ฉด null
      -- Aโ‰ B ์ด๋ฉด B_false

CASE

  • ๋น„๊ต(<,>, >=, <=,=) ๋“ฑ์˜ ์—ฌ๋Ÿฌ ์กฐ๊ฑด์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜
  • ๋ฌธ๋ฒ•
    • CASE ๋ณ€์ˆ˜
      WHEN ๊ฐ’1 THEN ๊ฒฐ๊ณผ1
      : ๋ณ€์ˆ˜=๊ฐ’1 ์ด๋ฉด ๊ฒฐ๊ณผ1
      WHEN ๊ฐ’2 THEN ๊ฒฐ๊ณผ2 : ๋ณ€์ˆ˜โ‰ ๊ฐ’1์ด๊ณ , ๋ณ€์ˆ˜=๊ฐ’2 ์ด๋ฉด ๊ฒฐ๊ณผ2
      ELSE ๊ฒฐ๊ณผ3 : ์œ„ ๋ชจ๋“  ๊ฐ’์— ๋งŒ์กฑ ๋ชปํ•  ์‹œ ๊ฒฐ๊ณผ3
      END;
    • CASE
      WHEN ์กฐ๊ฑด์‹1 THEN ๊ฒฐ๊ณผ1 : ์กฐ๊ฑด์‹1์ด ์ฐธ์ด๋ฉด ์ด๋ฉด ๊ฒฐ๊ณผ1
      WHEN ์กฐ๊ฑด์‹2 THEN ๊ฒฐ๊ณผ2 : ์กฐ๊ฑด์‹1์ด ๊ฑฐ์ง“์ด๊ณ , ์กฐ๊ฑด์‹2๊ฐ€ ์ฐธ์ด๋ฉด ๊ฒฐ๊ณผ2
      ELSE ๊ฒฐ๊ณผ3 : ์œ„ ๋ชจ๋“  ์กฐ๊ฑด์‹์— ๋งŒ์กฑ ๋ชปํ•  ์‹œ ๊ฒฐ๊ณผ3
      END;

DECODE, CASE ์˜ˆ์ œ

1. ์ฑ…์ด๋ฆ„์ด โ€˜์ถ•๊ตฌโ€™,โ€˜์•ผ๊ตฌโ€™,โ€™๋†๊ตฌโ€™,โ€™๊ณจํ”„โ€™ ๊ด€๋ จ์ฑ…์€ โ€˜๊ตฌ๊ธฐ์ข…๋ชฉโ€™, ํ”ผ๊ฒจ ๊ด€๋ จ ์ฑ…์€ โ€˜์Šค์ผ€์ดํŒ…โ€™, ์—ญ๋„ ๊ด€๋ จ ์ฑ…์€ โ€˜์ฒด์กฐโ€™ ๊ทธ ์™ธ ๋ชจ๋“  ์ฑ…์€ โ€˜์Šคํฌ์ธ โ€™๋กœ ์ถœ๋ ฅํ•˜๋Š” โ€˜์ข…๋ชฉโ€™์ปฌ๋Ÿผ์„ ๋งŒ๋“ค์–ด ์ฑ…๋ฒˆํ˜ธ, ์ฑ…์ด๋ฆ„, ์ถœํŒ์‚ฌ, ์ข…๋ชฉ์„ ์ถœ๋ ฅ

SELECT bookid, bookname, publisher,
CASE
WHEN (bookname LIKE '%์ถ•๊ตฌ%'
OR bookname LIKE '%์•ผ๊ตฌ%'
OR bookname LIKE '%๋†๊ตฌ%'
OR bookname LIKE '%๊ณจํ”„%') THEN '๊ตฌ๊ธฐ์ข…๋ชฉ'
WHEN bookname LIKE '%ํ”ผ๊ฒจ%' THEN '์Šค์ผ€์ดํŒ…'
WHEN bookname LIKE '%์—ญ๋„%' THEN '์ฒด์กฐ'
ELSE '๊ทธ ์™ธ'
END "์ข…๋ชฉ"
FROM book;

2. ๋ชจ๋“  ์ฑ…์˜ ํ‰๊ท  ๊ฐ€๊ฒฉ ์ด์ƒ์˜ ์ฑ…์€ โ€˜ํ‰๊ท ๊ฐ€์ด์ƒโ€™, ๋ฏธ๋งŒ์€ null๋กœ ์ถœ๋ ฅํ•˜๋Š” โ€˜ํ‰๊ท ๊ฐ€โ€™ ์ปฌ๋Ÿผ์„ ๋งŒ๋“ค์–ด ์ฑ…์ด๋ฆ„, ๊ฐ€๊ฒฉ, ํ‰๊ท ๊ฐ€๋ฅผ ์ถœ๋ ฅ

SELECT bookname, price,
CASE
WHEN price >= (SELECT AVG(price) FROM book) THEN 'ํ‰๊ท ๊ฐ€์ด์ƒ'
ELSE null
END "ํ‰๊ท ๊ฐ€"
FROM book;

3. ์ฑ…์˜ ๊ฐ€๊ฒฉ์ด 10000์› ์ดํ•˜์ธ ์ฑ…๋“ค์€ 1000์› ์ธ์ƒํ•˜๊ณ , ์ดˆ๊ณผ์ธ ์ฑ…์€ ๊ฐ€๊ฒฉ์€ ๋ณ€๋™์—†์ด ์ฑ…์ด๋ฆ„, ๊ฐ€๊ฒฉ, ๋ณ€๋™๊ฐ€๊ฒฉ์œผ๋กœ ์ถœ๋ ฅ

SELECT bookname, price,
CASE
WHEN price <= 10000 THEN price+1000
ELSE price
END "๋ณ€๋™๊ฐ€๊ฒฉ"
FROM book;

4. ์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ์žˆ๋Š” ๊ณ ๊ฐ์€ โ€˜๋น„๊ณต๊ฐœโ€™ ์—†๋Š” ๊ณ ๊ฐ์€ โ€˜์ž…๋ ฅํ•„์š”โ€™๋กœ ๊ณ ๊ฐ์˜ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ถœ๋ ฅ

SELECT c.*,
DECODE(phone, null, '์ž…๋ ฅํ•„์š”', '๋น„๊ณต๊ฐœ')
FROM customer c;

5. ์ฃผ๋ฌธ ๋‚ด์—ญ ์ค‘ ํ• ์ธ์ด ๋“ค์–ด๊ฐ„ ์ฑ…์€ โ€˜ํ• ์ธโ€™, ๊ฐ€๊ฒฉ์— ๋ณ€๋™์ด ์—†๋Š” ์ฑ…์€ โ€˜๋ณ€๋™์—†์Œโ€™์œผ๋กœ ์ถœ๋ ฅํ•˜๋Š” ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ฑ…์ด๋ฆ„, ์ถœํŒ์‚ฌ, ๊ฐ€๊ฒฉ, ํŒ๋งค๊ฐ€๊ฒฉ, ํ• ์ธ๋‚ด์—ญ์„ ์ถœ๋ ฅ

SELECT bookname ,publisher, price, saleprice,
CASE
WHEN (price-saleprice) > 0 THEN 'ํ• ์ธ'
WHEN (price-saleprice) = 0 THEN '๋ณ€๋™์—†์Œ'
ELSE '๊ธฐํƒ€'
END
FROM book b, orders o
WHERE b.bookid = o.bookid;

6. ์ฑ…์„ ๊ตฌ๋งคํ•œ ๋‚ด์—ญ์ด ์žˆ๋Š” ๊ณ ๊ฐ์—๊ฒŒ ์ฟ ํฐ์„ ์ œ๊ณตํ•˜๊ณ  ๊ตฌ๋งค ๋‚ด์—ญ์ด ์—†๋Š” ๊ณ ๊ฐ์€ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” โ€˜์ฟ ํฐโ€™ ์ปฌ๋Ÿผ์„ ๋งŒ๋“ค์–ด โ€˜์ œ๊ณตโ€™, โ€˜๋ฏธ์ œ๊ณตโ€™์œผ๋กœ ๊ณ ๊ฐ์ด๋ฆ„, ์ฟ ํฐ ์ปฌ๋Ÿผ ์ถœ๋ ฅ

SELECT a.name, "์ฟ ํฐ"
FROM
(SELECT c.name,
CASE
WHEN o.orderid is null THEN '๋ฏธ์ œ๊ณต'
ELSE '์ œ๊ณต'
END "์ฟ ํฐ"
FROM orders o, customer c
WHERE o.custid(+) = c.custid) a
GROUP BY a.name , "์ฟ ํฐ";

7. ์ฃผ๋ฌธ์„ 3๋ฒˆ ์ด์ƒํ•œ ๊ณ ๊ฐ์€ โ€˜์ตœ์šฐ์ˆ˜ํšŒ์›โ€™, 2๋ฒˆ์€ โ€˜์šฐ์ˆ˜ํšŒ์›โ€™, 1๋ฒˆ์€ โ€˜์ผ๋ฐ˜ํšŒ์›โ€™, 0๋ฒˆ์€ โ€˜์ž ์žฌ๊ณ ๊ฐโ€™ ์œผ๋กœ '๋ฉค๋ฒ„์‹ญโ€™ ์ปฌ๋Ÿผ์„ ๋งŒ๋“ค์–ด ์ด๋ฆ„๊ณผ ํ•จ๊ป˜ ์ถœ๋ ฅ

SELECT c.custid, c.name,
CASE
WHEN count() >= 3 THEN '์ตœ์šฐ์ˆ˜ํšŒ์›'
WHEN count(
) = 2 THEN '์šฐ์ˆ˜ํšŒ์›'
WHEN count(*) = 1 THEN (CASE
WHEN MAX(o.orderid) is null THEN '์ž ์žฌ๊ณ ๊ฐ'
ELSE '์ผ๋ฐ˜ํšŒ์›'
END)
END ๋ฉค๋ฒ„์‹ญ
FROM orders o, customer c
WHERE o.custid(+) = c.custid
GROUP BY c.custid, c.name;

                            

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด