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;

'MySQL' 카테고리의 다른 글
15. MySQL 테이블 Datatype TIMESTAMP (0) | 2024.12.02 |
---|---|
14. MySQL 날짜와 시간 처리하기 (0) | 2024.11.29 |
11. MySQL null인 데이터를 가져오기, 바꾸기 is null,ifnull (0) | 2024.11.29 |
9. MySQL 서브쿼리 Sub Query 사용하기 (1) | 2024.11.29 |
8. MySQL 데이터 집계함수 count, sum, avg, max, min (0) | 2024.11.28 |