MySQL

13. MySQL case, if 사용하기

oioioa 2024. 11. 29. 17:32

if

조건입력, 트루일때의 값, 그렇지 않을때의 값 입력(이렇게 조건이 2가지일때만 가능하다)

 

-- 데이터를 가공할때, 2가지 상황에 대해서 처리하는 함수 : if()

-- books 테이블에서, 페이지 수가 300페이지 이상인 책은 '긴책'이라고 하고

-- 그렇지 않으면, '짧은책' 이라고 하자. 컬럼 이름은 book_type으로 한다.

 

SELECT *,IF(pages>=300,'긴책','짧은책') as book_type

FROM books;

 

 

-- 출간년도가 2000년 이상인 책들은, '최신책' 이라고하고

-- 그렇지 않으면 '예전책'이라고 새로운 컬럼을 만드세요. 컬럼명은 type

 

SELECT *,if(released_year>=2000,'최신책','예전책') as type

FROM books;

 

 

 

case

case와 end는 한쌍이며 select 아래 위치, when - then은 항상 같이 사용

else는 모든 조건이 True가 아닌 경우 else의 결과값을 반환한다(else가 없으면 null 반환)

 

-- 3개 이상으로 분류하는 경우

-- stock_quantity 가 0이상이고 50 이하면, *

-- stock_quantity 가 51 이상이고 100이하면, **

-- stock_quantity 가 100 이상이면, ***

-- 새로운 컬럼 stock 을 만들어서 보여주세요.

 

-- 1. 방법

SELECT *,

CASE

when stock_quantity >=0 and stock_quantity <=50 THEN '*'

WHEN stock_quantity >=50 AND stock_quantity <=100 THEN '**'

ELSE '***'

END AS stock

FROM books;

 

-- 2. 방법

SELECT *,

CASE

when stock_quantity between 0 and 50 THEN '*'

WHEN stock_quantity BETWEEN 50 and 100 THEN '**'

ELSE '***'

END AS stock

FROM books;