Notice
Recent Posts
Recent Comments
Link
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- SQL캠프
- 리텐션
- 대시보드 체크리스트
- SQL캠프입문반
- 대시보드
- 네이버웹툰
- 특정차원
- SQL
- 데이터리안
- 4LS
- NULL값 있는 컬럼 정렬하기
- 채용공고
- 태블로
- TWBX
- Tableau
- GROUP BY와 NULL
- IF()
- 데이터 분석
- 살짝보기
- 아니시에이팅
- 데이터리안 세미나
- 데이터분석
- python연동
- TWBX 7기
- 퀵테이블계산
- mysql
- pmset
- 재귀쿼리
- 고객세분화분석
- 데이터분석가
Archives
ThinkCatLog
[SQL] CASE와 IF() 본문
목차
CASE
IF()
CASE와 IF()는 조건에 따라 데이터를 처리해야 하는 상황에서 주로 사용된다.
CASE
CASE문은 주로 새로운 컬럼을 생성할 때 사용되거나 GROUP BY와 함께 사용된다.
새로운 컬럼 생성
SELECT
CASE
WHEN 조건1 THEN 값1
WHEN 조건2 THEN 값2
ELSE 값3
END AS case1
FROM table_name
GROUP BY와 함께 사용
SELECT SUM(column1)
FROM table_name
GROUP BY (
CASE
WHEN 조건1 THEN 값1
WHEN 조건2 THEN 값2
ELSE 값3
END AS case1
)
예시
아래 테이블은 product_info 테이블이다.
아래 쿼리는 product_info 테이블에서 Price가 500이하인 제품과 초과인 제품으로 분류하는 컬럼을 만드는 쿼리이다.
주의할 점
CASE는 위에서부터 조건을 확인한 후 값을 부여한다. 조건의 순서를 고려하여 CASE문을 사용하면 더 간결하게 쿼리를 작성할 수 있다. 만약 price를 기준으로 500미만, 500이상 1000미만, 100이상 제품으로 나눌 경우에 다음과 같이 쿼리를 작성하면 된다.
SELECT
CASE
WHEN Price < 500 THEN '500미만'
WHEN Price >= 500 AND Price < 1000 THEN '500이상 1000미만'
ELSE '1000이상'
END AS '가격 카테고리'
FROM product_info
CASE가 조건을 처리하는 방법을 이용하면 더 간결하게 작성할 수 있다. 두번째 조건의 Price >= 500 을 생략해도 괜찮다. 이미, 500 미만의 제품들은 첫번째 조건에서 걸러졌기 때문에 두번째 조건에 영향을 받는 제품은 모두 500 이상인 제품이다. 다음과 같이 쿼리를 작성할 수 있다.
SELECT
CASE
WHEN Price < 500 THEN '500미만'
WHEN Price < 1000 THEN '500이상 1000미만'
ELSE '1000이상'
END AS '가격 카테고리'
FROM product_info
IF()
IF()도 CASE처럼 조건에 따라 새로운 컬럼을 만들 때 사용되거나 GROUP BY와 함께 사용된다. 여기서 IF()는 함수를 의미한다. IF statement와는 다른 개념이다. 뒤에 붙은 괄호로 두 IF를 구분할 수 있다.
새로운 컬럼 생성
SELECT IF(조건1, 조건1이 참일 때 값1, 조건1이 거짓일 때 값2)
FROM table_name
GROUP BY와 함께 사용
SELECT COUNT(column1)
FROM table_name
GROUP BY IF(조건1, 조건1이 참일 때 값1, 조건1이 거짓일 때 값2)
예시
아래 쿼리는 product_info 테이블에서 IF를 이용하여 Price가 500이하인 제품과 초과인 제품으로 분류하는 컬럼을 만드는 쿼리이다.
작업환경
MySQL Server 8.2.0
MySQL Workbench 8.0.34
참고
[IF()에 관한 참고 글] MySQL IF Function
[IF statement에 관한 참고 글] MySQL IF Statement
'데이터 분석 > SQL' 카테고리의 다른 글
[SQL] MySQL 워크벤치 Incompatible server version 해결 (0) | 2024.03.07 |
---|---|
[SQL] Pivot Table : 피벗 테이블 (1) | 2024.02.06 |
[SQL] GROUP BY는 NULL을 어떻게 처리할까? (0) | 2024.01.21 |
[SQL] ORDER BY를 했을때 NULL이 있으면 어떻게 정렬될까? (2) | 2024.01.15 |
[SQL] WHERE문과 BETWEEN, IN, LIKE 그리고 서브쿼리 (1) | 2024.01.10 |