음식 타입(cuisine_type)을 'Korean' 일 때는 '한식', 'Japanese' 혹은 'Chinses'일 때는 '아시아', 그 외에는 '기타'라고 지정
select case when cuisine_type = 'Korean' then '한식' when cuisine_type in ('Japanese', 'Chinese') then '아시아' else '기타' end "음식 타입", cuisine_type from food_orders
같은 컬럼 내의 조건이 여러 개일 때는 when 컬럼명 in ('조건1', '조건2') then 나올 값의 형태로 사용한다.
현재 내가 사용하는 MySQL에서는 case when 구문의 각 when 절에 대한 구분은 컴마를 사용하지 않는다.
조건문을 닫을 때는 end를 사용하고, else에 부합하는 부분이 없다면 else를 생략할 수 있다.

지역과 배달시간을 기반으로 배달수수료 구하기 (식당 이름, 주문 번호 함께 출력)
(지역 : 서울, 기타 - 서울일 때는 수수료 계산 * 1.1, 기타일 때는 곱하는 값 없음
시간 : 25분, 30분 - 25분 초과하면 음식 가격의 5%, 30분 초과하면 음식 가격의 10%)select restaurant_name, order_id, case when delivery_time>30 then price*0.1*if(addr like '서울%', 1.1, 1) when delivery_time>25 then price*0.02 *if(addr like '서울%', 1.1, 1) else 0 end "수수료" from food_orders지역(addr), 배달시간(delivery_time), 식당 이름(restaurant_name), 주문 번호(order_id)
case when 구문에 다른 조건을 붙일 때는 if 함수를 *을 사용하며 붙이면 된다.
if: 주소가 서울이라면 1.1을 곱하고 서울이 아니라면 1을 곱해서 원상태 그대로 두는 내용.

여러 번의 연산을 수행해야 할 때, 조건에 쿼리 결과를 사용하고 싶을 때 서브쿼리를 이용한다.
복잡한 연산 시, 최종 결과를 반환하기 위한 중간 테이블의 역할!
가장 많이 사용하는 서브쿼리는 인라인 뷰로, from 절에서 사용하며 하나의 테이블처럼 사용한다. 따라서 별명을 반드시! 기재해야 한다. 간단하게 a 라는 별명을 많이 사용하는 듯 하다.
음식점의 총 주문 수량과 주문 금액을 연산하고, 주문 수량을 기반으로 수수료 할인율 구하기
(수량이 5개 이하 → 10%
수량이 15개 초과, 총 주문 금액이 300000 이상 → 0.5%
이 외에는 일괄 1%)SELECT restaurant_name, case when sum_of_quantity<=5 then 0.1 when sum_of_quantity>15 and sum_of_price>=300000 then 0.005 else 0.1 end ratio_of_add FROM ( select restaurant_name, sum(quantity) sum_of_quantity, sum(price) sum_of_price from food_orders fo group by 1 ) a;음식점 이름(restaurant_name), quantity(주문 수량), price(주문 금액)
총 주문 수량을 sum_of_quantity, 총 주문 금액을 sum_of_price, 수수료 할인율을 ratio_of_add
서브쿼리문으로 연산 결과를 활용할 것이기 때문에 서브쿼리문에 총 주문 수량과 총 주문 금액을 구하는 식을 적고 연산 결과에 대한 별명을 설정했다. 그리고 본쿼리(?)에서 수수료 할인율에 대한 조건을 설정했다.

별명은 서브쿼리문, 컬럼, 테이블 모두에 설정 가능하다.
한 쿼리를 끝내고 싶을 때는 ;를 사용한다. 엔터를 세 번 누르지 않아도 된다!!!