* 주중 : 25분 이상
* 주말 : 30분 이상
1. SQL 문의 기본 구조로 시작
2. 조건을 여러번 적용할 때 if, case 문 중 어떤 것을 이용할지 결정
3. 조건에 '주중, 주말' 조건과 '배달시간' 조건을 동시에 줄 때 사용 할 논리연산자 결정
1번부터 내용을 보면 SQL의 기본 구조로 시작하라고 안내한다.
배달 시간을 판단하기 위한 문제이므로 테이블은 'food_orders' 를 이용한다.
SELECT *
FROM food_orders fo
2번에서는 조건을 여러번 적용할 때, if와 case 문 중 어떤 것을 사용하겠냐 묻고 있는데
이는 지난번 배웠던 것처럼 조건이 여러개일 경우는 case 문을 사용하면 된다.
코드를 작성하면서 조건문의 내용을 한번에 적기 위해 3번도 같이 살펴본다.
'주중, 주말' 조건과 '배달시간' 조건을 동시에 줄 때 사용할 논리연산자를 결정하라고 한다.
조건을 동시에 줄 때는 and 키워드를 사용하면 된다.
따라서 2번과 3번까지 모두 적용한 코드는 다음과 같다.
SELECT CASE WHEN delivery_time >= 30 and day_of_the_week = 'Weekend' then 'Late'
WHEN delivery_time >= 25 and day_of_the_week = 'Weekday' then 'Late'
else 'On-time'
end as '지연 여부'
FROM food_orders fo
코드에서는 배달시간(delivery_time) 이 30분 이상이면서 날짜(day_of_the_week) 가 주말(Weekend) 일 때와
배달시간이 25분 이상이면서 날짜가 평일일 때를 구분지었고 조건이 충족될 경우 배달시간이 늦은 것으로 판단, 결과는 'Late' 로 출력하도록 했다.
배달 시간이 늦지 않았을 경우는 모두 else 로 처리해 'On-time' 이라고 표기하도록 한다.
이 case 문을 마치기 위해 end 키워드를 적고 컬럼명을 '지연 여부' 로 표시해주었다.
다만 여기서 추가적으로, 결과물 예시를 보면 다음과 같이
지연여부 외에도 다른 컬럼들이 보인다.
이를 같이 출력하도록 한다.
따라서 최종 코드는 다음과 같다.
SELECT order_id,
restaurant_name,
day_of_the_week,
delivery_time,
CASE WHEN delivery_time >= 30 and day_of_the_week = 'Weekend' then 'Late'
WHEN delivery_time >= 25 and day_of_the_week = 'Weekday' then 'Late'
else 'On-time'
end as '지연 여부'
FROM food_orders fo
#9. DATA TYPE 오류 확인 (3) | 2024.10.23 |
---|---|
#8. IF/CASE 실습 (0) | 2024.10.23 |
#7. IF/CASE 문법 (3) | 2024.10.23 |
#6. 문자 데이터 가공 실습 (2) | 2024.10.18 |
#5. 문자 데이터 가공 - 형태 변화 (1) | 2024.10.18 |