SQL 조건문 IF, CASE

습토리·2025년 2월 16일

SQL

목록 보기
11/12

조건에 따라 포맷을 다르게 변경해야 한다면

✔️ 조건에 따라 다른 연산을 하는 방법을 알아봅시다

1️⃣ Group by처럼 조건도 카테고리별로 줄 수 있을까?

👉 범주별로 다른 연산(계산, 문자 변경 등)을 적용할 수 있을까요?

SQL은 조건에 따라 연산을 적용할 수 있는 기능을 제공합니다. 특정 범주를 조건으로 지정하고, 해당 범주에 적용할 로직을 정의할 수 있습니다.

💡 예시 상황

  • 음식 타입이 'Korean'이면 '한식', 그렇지 않으면 '기타'로 표시하기
  • 주소가 '경기도'이면 '경기도', 그 외에는 앞 두 글자만 출력하기
  • 음식 단가는 주문 수량이 1개면 가격 그대로, 2개 이상이면 가격/수량으로 계산하기

---

2️⃣ 조건에 따라 다르게 적용하고 싶을 때 - IF 문 기초

👉 엑셀의 IF 함수와 유사하게 작동합니다.

📌 IF 문 문법

IF(조건, 참일 때 값, 거짓일 때 값)

🛠️ IF 문 실습

  1. 음식 타입을 '한식'과 '기타'로 구분
SELECT restaurant_name,
       cuisine_type AS "원래 음식 타입",
       IF(cuisine_type = 'Korean', '한식', '기타') AS "음식 타입"
FROM food_orders;
  1. '평택군 문곡리'를 '문가리'로 변경
SELECT addr AS "원래 주소",
       IF(addr LIKE '%평택군%', REPLACE(addr, '문곡리', '문가리'), addr) AS "바뀐 주소"
FROM food_orders
WHERE addr LIKE '%문곡리%';
  1. 잘못된 이메일 주소(gmail → @gmail) 수정
SELECT SUBSTRING(IF(email LIKE '%gmail%', REPLACE(email, 'gmail', '@gmail'), email), 10) AS "이메일 도메인",
       COUNT(customer_id) AS "고객 수",
       AVG(age) AS "평균 연령"
FROM customers
GROUP BY 1;

3️⃣ 여러 조건을 지정하고 싶을 때 - CASE 문 기초

👉 IF 문은 2가지 조건만 처리 가능하지만, CASE 문은 여러 조건을 다룰 수 있습니다.

📌 CASE 문 문법

CASE
    WHEN 조건1 THEN1
    WHEN 조건2 THEN2
    ELSE3
END

🛠️ CASE 문 실습

  1. 음식 타입을 3가지로 분류
SELECT restaurant_name,
       cuisine_type AS "원래 음식 타입",
       CASE
           WHEN cuisine_type = 'Korean' THEN '한식'
           WHEN cuisine_type IN ('Japanese', 'Chinese') THEN '아시아'
           ELSE '기타'
       END AS "음식 타입"
FROM food_orders;
  1. 주문 수량에 따라 단가 계산
SELECT order_id,
       price,
       quantity,
       CASE
           WHEN quantity = 1 THEN price
           WHEN quantity >= 2 THEN price / quantity
       END AS "음식 단가"
FROM food_orders;
  1. 주소 포맷 변경
SELECT restaurant_name,
       addr,
       CASE
           WHEN addr LIKE '%경기도%' THEN '경기도'
           WHEN addr LIKE '%특별%' OR addr LIKE '%광역%' THEN SUBSTRING(addr, 1, 5)
           ELSE SUBSTRING(addr, 1, 2)
       END AS "변경된 주소"
FROM food_orders;

4️⃣ 조건문 활용 사례

💡 조건문(IF/CASE) 활용 예제

  1. 새로운 카테고리 생성

    • 음식 타입에 따라 '한식', '아시아 음식', '기타'를 생성.
    • 고객을 나이대와 성별에 따라 10대 남성, 20대 여성 등으로 구분.
  2. 조건에 따라 계산식 변경

    • 결제 방식(현금/카드)에 따라 수수료율을 다르게 계산.
    • 수량에 따라 단가 계산 방식을 다르게 적용.
  3. 다른 SQL 함수와 함께 사용

    • CONCAT() 함수 안에서 IF/CASE 사용.
    • 예: 리뷰에 별점이 있으면 함께 표시하고, 없으면 생략.

🧠 마무리 팁

  • IF: 두 가지 조건만 필요할 때 간편.
  • CASE: 다수의 조건을 깔끔하게 처리.
  • IN 연산자를 사용해 여러 조건을 OR로 나열하는 실수를 피하자.

🔍 SQL 조건문은 데이터 분석과 가공의 필수 도구입니다! 🎯

profile
재미난 삶을 살다

1개의 댓글

comment-user-thumbnail
2025년 4월 2일

답글 달기