- 아티클 스터디 2건
- 엑셀보다 쉽고 빠른 SQL 3주차
- 엑셀보다 쉽고 빠른 SQL 4주차
select restaurant_name "원래 상점명",
replace(restaurant_name, 'Blue', 'Pink') "바뀐 상점명"
from food_orders
where restaurant_name like '%Blue Ribbon%'
select addr "원래 주소",
substr(addr, 1, 2) "시도"
from food_orders
where addr like '%서울특별시%'
select restaurant_name "원래 이름",
addr "원래 주소",
concat('[', substring(addr, 1, 2), '] ', restaurant_name) "바뀐 이름"
from food_orders
where addr like '%서울%'
SELECT SUBSTR(addr, 1, 2) '시도',
cuisine_type '음식 종류',
AVG(price) '평균 금액'
FROM food_orders
WHERE addr LIKE '서울%'
GROUP BY 2
여기서 1은 SUBSTR(addr, 1, 2), 2는 cuisine_type 의미.
select restaurant_name,
cuisine_type "원래 음식 타입",
if(cuisine_type='Korean', '한식', '기타') "음식 타입"
from food_orders
select addr "원래 주소",
if(addr like '%평택군%', replace(addr, '문곡리', '문가리'), addr) "바뀐 주소"
from food_orders
where addr like '%문곡리%'
select substring(if(email like '%gmail%', replace(email, 'gmail', '@gmail'), email), 10) "이메일 도메인",
count(customer_id) "고객 수",
avg(age) "평균 연령"
from customers
group by 1
SELECT CASE WHEN cuisine_type = 'Korean' THEN '한식'
WHEN cuisine_type IN ('Japanese', 'Chinese') THEN '아시아'
ELSE '기타' END '음식타입',
cuisine_type
FROM food_orders
SELECT restaurant_name, order_id, delivery_time, price, addr,
CASE WHEN delivery_time > 30 THEN price * 0.1 * IF(addr LIKE '서울%', 1.1, 1)
WHEN delivery_time BETWEEN 26 AND 30 THEN price * 0.05 * IF(addr LIKE '서울%', 1.1, 1)
ELSE 0 END '수수료'
FROM food_orders
SELECT order_id, price, quantity, day_of_the_week,
CASE WHEN quantity > 3 THEN 1.2 * IF(day_of_the_week = 'weekday', 3000, 3500)
WHEN quantity <= 3 THEN 1 * IF(day_of_the_week = 'weekday', 3000, 3500) END '배달할증료'
FROM food_orders
SELECT order_id, price, quantity, day_of_the_week,
IF(quantity > 3, 1.2, 1) * IF(day_of_the_week = 'weekday', 3000, 3500) '배달할증료'
FROM food_orders
조건이 2개 이하일 때에는 IF문이 더 간결함.
select order_id, restaurant_name, if(over_time>=0, over_time, 0) over_time
from
(
select order_id, restaurant_name, food_preparation_time-25 over_time
from food_orders
) a
select restaurant_name,
price_per_plate*ratio_of_add "수수료"
from
(
select restaurant_name,
case when price_per_plate<5000 then 0.005
when price_per_plate between 5000 and 19999 then 0.01
when price_per_plate between 20000 and 29999 then 0.02
else 0.03 end ratio_of_add,
price_per_plate
from
(
select restaurant_name, avg(price/quantity) price_per_plate
from food_orders
group by 1
) a
) b
SELECT *
FROM food_orders fo LEFT JOIN payments p ON fo.order_id = p.order_id
SELECT *
FROM food_orders fo INNER JOIN payments p ON fo.order_id = p.order_id