👉 범주별로 다른 연산(계산, 문자 변경 등)을 적용할 수 있을까요?
SQL은 조건에 따라 연산을 적용할 수 있는 기능을 제공합니다. 특정 범주를 조건으로 지정하고, 해당 범주에 적용할 로직을 정의할 수 있습니다.
💡 예시 상황
---
👉 엑셀의 IF 함수와 유사하게 작동합니다.
IF(조건, 참일 때 값, 거짓일 때 값)
SELECT restaurant_name,
cuisine_type AS "원래 음식 타입",
IF(cuisine_type = 'Korean', '한식', '기타') AS "음식 타입"
FROM food_orders;
SELECT addr AS "원래 주소",
IF(addr LIKE '%평택군%', REPLACE(addr, '문곡리', '문가리'), addr) AS "바뀐 주소"
FROM food_orders
WHERE addr LIKE '%문곡리%';
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;
👉 IF 문은 2가지 조건만 처리 가능하지만, CASE 문은 여러 조건을 다룰 수 있습니다.
CASE
WHEN 조건1 THEN 값1
WHEN 조건2 THEN 값2
ELSE 값3
END
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;
SELECT order_id,
price,
quantity,
CASE
WHEN quantity = 1 THEN price
WHEN quantity >= 2 THEN price / quantity
END AS "음식 단가"
FROM food_orders;
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;
💡 조건문(IF/CASE) 활용 예제
새로운 카테고리 생성
'한식', '아시아 음식', '기타'를 생성.10대 남성, 20대 여성 등으로 구분.조건에 따라 계산식 변경
다른 SQL 함수와 함께 사용
CONCAT() 함수 안에서 IF/CASE 사용.IF 문: 두 가지 조건만 필요할 때 간편.CASE 문: 다수의 조건을 깔끔하게 처리.IN 연산자를 사용해 여러 조건을 OR로 나열하는 실수를 피하자.🔍 SQL 조건문은 데이터 분석과 가공의 필수 도구입니다! 🎯
완