CASE
- 조건에 따라 분기
- 다중 분기
- 조건에 맞는 WHEN이 여러개더라도 먼저 조건이 만족하는 WHEN 처리됨
- SELECT문에서 많이 사용됨
CASE
WHEN 조건 THEN 조건을 만족할 때 적용할 내용
ELSE 조건을 만족하지 않을 때 적용할 내용
END
Q1. buytbl에서 구매액이 1500원 이상인 사람은 최우수 고객, 1000원 이상인 사람은 우수고객, 1원 이상인 사람은 일반고객, 구매내역이 없는 고객은 유령회원으로 등급을 매기려고 한다. 회원 아이디, 이름, 총 구매액, 분류한 등급을 총 구매액이 높은 순서대로 출력하라.
select U.userID, U.name, sum(price*amount) Total_Price, case when sum(price*amount) >= 1500 then 'VVIP' when sum(price*amount) >= 1000 then 'VIP' when sum(price*amount) >= 1 then 'Basic' else 'Ghost' end CustomerClass from usertbl U left join buytbl B on B.userID = U.userID group by B.userID, U.name order by Total_Price desc;
when 안에 별칭을 사용하면 에러가 발생, 그렇다면 별칭을 사용할 수 있는 다른 방법은?
>> 아래와 같이 서브쿼리문 사용!select *, case when Total_Price >= 1500 then 'VVIP' when Total_Price >= 1000 then 'VIP' when Total_Price >= 1 then 'Basic' else 'Ghost' end CustomerClass from (select U.userID, U.name, sum(price*amount) Total_Price from usertbl U left join buytbl B on B.userID = U.userID group by B.userID, U.name order by Total_Price desc)A;
>> 여기에서 A는 삽입된 서브쿼리문의 별칭, MySQL은 서브쿼리를 참조할 때 무의미한 별칭이라도 꼭 붙여줘야 함
Reference : 이것이 MySQL이다
'SQL' 카테고리의 다른 글
09. [SQL] 연습문제 - JOIN (0) | 2024.04.09 |
---|---|
08. [SQL] 연습문제 - SELECT ... FROM (0) | 2024.04.08 |
06. [SQL] 조인 (0) | 2024.04.08 |
05. [SQL] SELECT문 (1) | 2024.04.07 |
04. [SQL] 테이블 외의 데이터베이스 개체의 활용 (1) | 2024.04.07 |