본문 바로가기
데이터분석

[SQL] IF,IFNULL,COALECSE, CASE 조건문 활용법

by 규랃 2024. 2. 16.
728x90
반응형

좀 더 심화된 SQL 문법들을 배우기 전에 알아두면 좋을 것들을 먼저 학습해 보도록 하겠습니다. 이번 글에서는 지난 예제에서 확인할 수 있었던 조건문과 관련된 함수들을 학습해 보겠습니다. 

 

1️⃣ IF 조건문 

  • IF 조건문의 문법은 다음과 같이 매우 쉽습니다.
  • 엑셀에서 쓰는 것과 거의 동일하기 때문에 익숙한 함수입니다. 
SELECT IF(조건문, 참일 때 반환, 거짓일 때 반환)
FROM dual

 

  • 또한 IF문 안에 IF문을 중첩으로 사용할 수 있기 때문에 다중조건문이 필요한 경우 중첩해서 사용할 수 있습니다.
SELECT IF(조건문, IF(조건문, 참일 때 반환, 거짓일 때 반환), 거짓일 때 반환)
FROM dual

 

  • 자매품으로 MYSQL에서 사용가능한 IFNULL이라는 함수가 있습니다. 
  • 반환값이 NULL경우 대체 값으로 출력해주는 함수입니다.
  • 보통, 집계 값이 없는 경우 0으로 출력할 때 많이 활용합니다.
SELECT IFNULL(order_price,0)
FROM dual

 

  • 위의 IFNULL의 경우 MYSQL에서만 사용 가능하기 때문에 범용적으로 사용가능한 COALESCE 함수도 존재합니다. 
  • IFNULL은 하나의 대체값만 설정할 수 있지만 COALESCE 함수는 여러 개의 대체값을 지정할 수 있습니다. 
SELECT COALESCE(order_price,order_amount, 0)
FROM dual

 

2️⃣ CASE

  • CASE 조건문은 IF보다 좀 더 직관적이고 여러개의 조건을 나열하기 좋아 활용도가 높습니다.
  • CASE 조건문의 문법은 다음과 같습니다.
SELECT
	CASE 
    	WHEN 조건문 THEN 리턴값
        WHEN 조건문 THEN 리턴값
        ELSE 리턴값
    END
FROM dual

 

  • CASE문으로 WHEN, THEN, ELSE, END 키워드와 함께 작성하여야 문법이 완성되므로 문법에 맞게 잘 작성되었는지 확인해야 합니다. 
  • 단, ELSE 키워드는 생략가능하며 조건에 모두 충족되지 않는 경우 리턴값을 지정받지 못해 NULL이 반환됩니다.
SELECT
	CASE 
    	WHEN 조건문 THEN 리턴값
        WHEN 조건문 THEN 리턴값
    END
FROM dual
728x90
반응형