SQL 공부일지

[SQL실습] IF, CASE

PM곰돌 2023. 4. 11. 22:58

iF조건문의 기본 형태는 다음과 같다.

IF <조건식> WHEN
	SQL문장들
END IF ;

 

IF ~ ELSE 문

IF문이 참이라면 ~의 값을 내보내고 아니라면 ~의 값을 보내라는 문장이다.

 

과연 IF문이 실무에서 사용될 수 있는 방법에는 어떤 것이 있을까? 테이블을 같이 보면서 알아보자!

 

우선 다음과 같은 테이블이 있다고 가정해보자.

Id first_name last_name salary department
1 펀지밥 50000 HR
2 55000 IT
3 징이 60000 IT
4 게사장 45000 HR
5 람이 70000 Finance

이렇게 직원들이 있을 때 보너스를 주게 되었다. 

 

위의 테이블을 만들기위한 쿼리문은 다음과 같다.

-- Create the employees table
CREATE TABLE employees (
  id INT PRIMARY KEY,
  first_name VARCHAR(255),
  last_name VARCHAR(255),
  salary INT,
  department VARCHAR(255)
);

-- Insert the data into the employees table
INSERT INTO employees (id, first_name, last_name, salary, department)
VALUES (1, 'Alice', 'Smith', 50000, 'HR');

INSERT INTO employees (id, first_name, last_name, salary, department)
VALUES (2, 'Bob', 'Johnson', 55000, 'IT');

INSERT INTO employees (id, first_name, last_name, salary, department)
VALUES (3, 'Carol', 'Williams', 60000, 'IT');

INSERT INTO employees (id, first_name, last_name, salary, department)
VALUES (4, 'Dave', 'Brown', 45000, 'HR');

INSERT INTO employees (id, first_name, last_name, salary, department)
VALUES (5, 'Eve', 'Jones', 70000, 'Finance');

해당 쿼리를 MySQL에 입력해 실습을 위한 테이블을 만들고 시작하자.

 

급여가 50,000초과인 경우 10%를 주기로 했고 그렇지 않다면 5%의 보너스를 주려고 한다면 

어떻게 SQL문을 입력하면 그 데이터를 확인할 수 있을까?

이런 특정한 조건이 주어졌을때 다른 결과값을 확인 할 수 있는게 IF문이다.

 

다음과 같은 쿼리문을 입력하면 위와 같은 상황에서 열을 추가해서 

누가 얼마만큼의 보너스를 받게 되는지 확인할 수 있다.

SELECT 
  id,
  first_name,
  last_name,
  salary,
  department,
  IF(salary > 50000, salary * 0.1, salary * 0.05) AS bonus
FROM employees;
Id first_name last_name salary department bonus
1 펀지밥 50000 HR 2500
2 55000 IT 5500
3 징이 60000 IT 6000
4 게사장 45000 HR 2250
5 람이 70000 Finance 7000

 

만약 같은 결과를 내기 위해서 CASE문을 사용한다면 다음과 같다.

SELECT 
  id,
  first_name,
  last_name,
  salary,
  department,
  (CASE
    WHEN salary > 50000 THEN salary * 0.1
    ELSE salary * 0.05
  END) AS bonus
FROM employees;