Tools/- SQL

[MySQL] Case๋ฌธ | ๋ฌธ๋ฒ•๊ณผ ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ ์‚ดํŽด๋ณด๊ธฐ

์Šค์œ„๋ฏผ 2024. 4. 7. 19:53

๐Ÿ“Œ Case๋ฌธ

์—ฌ๋Ÿฌ ์กฐ๊ฑด์„ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ '๋‹ค์ค‘ ๋ถ„๊ธฐ' ๋ฌธ๋ฒ•์ด๋‹ค

  • ์Šคํ† ์–ด๋“œ ํ”„๋กœ์‹œ์ €์—์„œ SQL ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋ฌธ์—์„œ ํ™œ์šฉ
  • SELECT ๋ฌธ์—์„œ CASE๋ฌธ์œผ๋กœ ๊ฐ’ ํ˜ธ์ถœ
CASE
	WHEN ์กฐ๊ฑด1 THEN
    	SET ๋ณ€์ˆ˜๊ฐ’
	WHEN ์กฐ๊ฑด1 THEN
    	SET ๋ณ€์ˆ˜๊ฐ’
	WHEN ์กฐ๊ฑด1 THEN
    	SET ๋ณ€์ˆ˜๊ฐ’
	ELSE
    	SET ๋ณ€์ˆ˜๊ฐ’
END CASE;

 

 

โœ๏ธ SELECT๋ฌธ์—์„œ CASE๋ฌธ ํ™œ์šฉํ•ด์„œ ํšŒ์›๋“ฑ๊ธ‰ ๋ถ„๋ฅ˜ํ•˜๊ธฐ

SELECT M.mem_id, M.mem_name, SUM(price*amount) "์ด๊ตฌ๋งค์•ก",
	CASE
    	WHEN (SUM(price*amount) >= 1500) THEN '์ตœ์šฐ์ˆ˜๊ณ ๊ฐ'
        WHEN (SUM(price*amount) >= 1000) THEN '์šฐ์ˆ˜๊ณ ๊ฐ'
        WHEN (SUM(price*amount) >= 1) THEN '์ผ๋ฐ˜๊ณ ๊ฐ'
        ELSE '์œ ๋ น๊ณ ๊ฐ'
	END 'ํšŒ์›๋“ฑ๊ธ‰' -- CASE๋ฌธ์„ ํ™œ์šฉํ•ด์„œ ์ƒˆ๋กœ์šด 'ํšŒ์›๋“ฑ๊ธ‰'์—ด ์ถ”๊ฐ€
FROM buy B
	RIGHT OUTER JOIN member M
    ON B.mem_id = M.mem_id
GROUP BY M.mem_id
ORDER BY SUM(price*amount) DESC;

 

์ „์ฒด ์ƒํ’ˆ ๊ตฌ๋งค์•ก์ด 1500์ด์ƒ ์‹œ ์ตœ์šฐ์ˆ˜๊ณ ๊ฐ, 1000์ด์ƒ ์‹œ ์šฐ์ˆ˜๊ณ ๊ฐ, 1์ด์ƒ ์‹œ ์ผ๋ฐ˜๊ณ ๊ฐ, ๋‚˜๋จธ์ง€๋Š” ์œ ๋ น๊ณ ๊ฐ์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜์˜€๋‹ค.

 

โœ๏ธํ”„๋กœ์‹œ์ €์— CASE๋ฌธ ๋„ฃ๊ธฐ

DROP PROCEDURE IF EXISTS caseProc;
DELIMITER $$
CREATE PROCEDURE caseProc() -- ํ”„๋กœ์‹œ์ € ์ด๋ฆ„ ์„ค์ •
BEGIN
	DECLARE point INT; -- ๋ณ€์ˆ˜ ์ƒ์„ฑ
    DECLARE credit CHAR(1); -- ๋ณ€์ˆ˜ ์ƒ์„ฑ
    SET point = 88; -- point์˜ ์ดˆ๊ธฐ๊ฐ’ ์„ค์ •
    
    CASE
    	WHEN point >= 90 THEN
        	SET credit = 'A';
        WHEN point >= 80 THEN
        	SET credit = 'B';
        WHEN point >= 70 THEN
        	SET credit = 'C';
        WHEN point >= 60 THEN
        	SET credit = 'D';
        ELSE
        	SET credit = 'F';
	END CASE;
    SELECT CONCAT('์ทจ๋“์ ์ˆ˜ ==>', point) '์ทจ๋“์ ์ˆ˜', CONCAT('ํ•™์  ==>', credit) 'ํ•™์ ';
END $$
DELIMITER ; -- ํ”„๋กœ์‹œ์ €๋ฌธ end

CALL caseProc(); -- ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ

 

๊ฒฐ๊ณผ๋Š” ์ด๋ ‡๊ฒŒ ๋‚˜์˜จ๋‹ค!

 

 


 

 

๋‹ค์Œ์—๋Š” ์‹ค์ œ ๋ฌธ์ œ ์˜ˆ์ œ๋กœ CASE๋ฌธ์„ ๋‹ค๋ค„๋ณด๊ฒ ๋‹ค !