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;
'SQL 공부일지' 카테고리의 다른 글
내가 교육 회사 PM이라면? [SQL 실습] (0) | 2023.04.12 |
---|---|
[SQL 실습] 매출데이터 조회하기 (0) | 2023.03.28 |
[SQL 실습] 조회 가능한 데이터베이스 (0) | 2023.03.27 |
[SQL 실습] JOIN (2) (0) | 2023.03.22 |
[SQL 실습] JOIN의 기초 알아보기 (INNER JOIN, OUTER JOIN) (1) | 2023.03.15 |