본문 바로가기
SQL

[SQL] CASE WHEN / CREATE FUNCTION

by 장찐 2023. 5. 9.

📚 CASE WHEN 

 

📌 문법  

-- 방법1 
CASE 
    WHEN 조건식1 THEN 결과1
    WHEN 조건식2 THEN 결과2 
    ELSE 결과3 
END

-- 방법2 
CASE [컬럼]
    WHEN 조건값1 THEN 결과1
    WHEN 조건값2 THEN 결과2 
    ELSE 결과3 
END

•  방법1은 조건식을 직접 입력하는 방식이고, 방법이는 컬럼을 지정하고 해당 컬럼에서 참거짓을 판별할 조건값을 입력하는 방식이다. 
• ELSE 생략 시 NULL 값을 반환함 
 
 
 

📚 함수 만들기 

📌 문법 

CREATE FUNCTION [함수 이름] ([입력값 이름] [데이터 타입], ......) 
    RETURNS [결과값 데이터 타입]
BEGIN
    DECLARE [임시값 이름] [데이터 타입] 
    SET [임시값 이름] =[입력값 이름]
    쿼리;
    RETURN 결과값 
END

 
📌 사용 예시 

source : 가장 쉽게 시작하는 데이터분석, SQL유치원 (패스트캠퍼스)

• DECLARE는 함수 안에서 사용하는 임시 값임. 
• '쿼리' 부분에 실제로 함수 기능 부분을 작성함 
• 쿼리 부분에 CASE WHEN 조건을 사용하면 조건에 따른 결과값 출력이 가능함 
 

source : 가장 쉽게 시작하는 데이터분석, SQL유치원 (패스트캠퍼스)

• SQL workbench 에서 함수를 사용할 때에는 위와 같이 앞뒤로 DELIMITER 라는 추가적인 명령어를 입력해야 함 
끝부분 DELIMITER 의 콤마 앞에는 한 칸 띄워야 함 
 
 
 

-- 함수 만들기 
SET GLOBAL log_bin_trust_function_creators = 1 ;
--DROP FUNCTION isStrong;

DELIMITER // 
CREATE FUNCTION isStrong(attack INT, defense INT)
		RETURNS VARCHAR(20)
BEGIN 
	DECLARE a INT;
    DECLARE b INT;
    DECLARE strong VARCHAR(20); 
    SET a = attack ;
    SET b = defense;
    SELECT case when a + b > 120 then 'very strong' 
				when a + b > 90 then 'strong'
                else 'not strong' END 
    INTO strong; 
    RETURN strong; 
END 

// 
DELIMITER ; -- 꼭 콤마랑 한 칸 띄우기

라인 14와 같이 SELECT 부분에 CASE WHEN을 사용하면 기준이나 조건에 따른 결과값 출력이 가능함 
 

 
 

'SQL' 카테고리의 다른 글

[SQL] GROUP BY  (0) 2023.03.08
[SQL] 기본함수, ORDER BY  (1) 2023.03.05
[SQL] 데이터베이스 다루기  (0) 2023.02.28
[SQL] 서브쿼리 기본 개념  (0) 2023.02.06

댓글