SQL/개념
IF 함수 (MySQL)
데이터분석가 이채은
2024. 11. 13. 17:21
IF 함수란?
"IF" 함수는 조건에 따라 다른 값을 반환하는 논리 함수입니다. 특정 조건이 참인지 거짓인지 평가한 후, 참일 때와 거짓일 때 각각 다른 값을 반환합니다.
IF 함수는 주로 MySQL과 같은 일부 DBMS에서 지원되며, 다른 DBMS에서는 CASE 문으로 대체 가능합니다.
IF 함수의 기본 구문
IF(condition, true_value, false_value)
- condition: 평가할 조건식 (참 또는 거짓으로 평가됨).
- true_value: 조건이 참일 때 반환할 값.
- false_value: 조건이 거짓일 때 반환할 값
IF와 CASE의 차이점
- IF:
- 단순 조건 평가와 반환에 적합.
- MySQL에서만 지원되며, 간단한 조건 처리에 사용.
- CASE:
- 복잡한 조건 처리와 다중 조건 분기에 적합.
- 대부분의 DBMS에서 지원되며, 더 유연하게 사용 가능.
예제
1. 급여가 7000 이상인지 평가
문제: 급여가 7000 이상이면 "High", 그렇지 않으면 "Low"를 반환하려면?
SELECT employee_id,
salary,
IF(salary >= 7000, 'High', 'Low') AS salary_level
FROM Employees;

2. 조건에 따라 숫자 반환
문제: 급여가 7000 이상이면 1, 그렇지 않으면 0을 반환하려면?
SELECT employee_id,
salary,
IF(salary >= 7000, 1, 0) AS salary_flag
FROM Employees;
활용 예제
1. WHERE 절에서 사용
문제: 급여가 7000 이상인 직원만 조회하려면?
SELECT employee_id, salary
FROM Employees
WHERE IF(salary >= 7000, TRUE, FALSE);
2. GROUP BY와 함께 사용
문제: 급여가 "High"와 "Low"로 그룹화하려면?
SELECT IF(salary >= 7000, 'High', 'Low') AS salary_level,
COUNT(*) AS employee_count
FROM Employees
GROUP BY salary_level;
3. ORDER BY에서 사용
문제: 급여가 높은 직원을 먼저 정렬하려면?
SELECT employee_id, salary
FROM Employees
ORDER BY IF(salary >= 7000, 1, 0) DESC;