데이터 분석 기술 블로그

IF 함수 (MySQL) 본문

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의 차이점

 

  1. IF:
    • 단순 조건 평가와 반환에 적합.
    • MySQL에서만 지원되며, 간단한 조건 처리에 사용.
  2. 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;

'SQL > 개념' 카테고리의 다른 글

COALESCE 함수  (0) 2024.11.15
REGEXP 함수 (MySQL)  (0) 2024.11.14
DATEDIFF 함수  (0) 2024.11.12
DATE_FORMAT 함수  (0) 2024.11.11
SUBSTRING 함수  (0) 2024.11.10