Programming Language/SQL 문제풀이
[SQL 문제풀이] 1. CASE 문을 사용한 지각여부 판단
wakelight23
2024. 10. 14. 18:24
문제 : 배달시간이 늦었는지 판단하는 값 만들기
지시사항 - 주중 : 25분 초과
주말 : 30분 초과
예시 TABLE : 주문정보
| 고객코드 | 음식점명 | 평일주말 | 배달시간 | |
| 1 | 1001 | 식스맨 | 평일 | 24 |
| 2 | 1002 | 피자리아 | 주말 | 27 |
| 3 | 1003 | 스케스시 | 주말 | 32 |
| 4 | 1004 | 셋찜닭 | 평일 | 25 |
| 5 | 1005 | 단리향 | 평일 | 21 |
| 6 | 1006 | 이겼동 | 주말 | 29 |
● 단계별 풀이
1. 어떤 테이블에서 데이터를 찾을 것인가 - FROM 주문정보
2. 어떤 칼럼을 사용할 것인가 - 평일주말, 배달시간
3. 어떤 조건을 지정해야 할 것인가 - X
4. 어떤 함수를 사용할 건인가 - CASE WHEN THEN END
전체 구문 ( + 해석)
| SELECT 고객코드, 음식점명, 평일주말, 배달시간, CASE WHEN (배달시간 <= 25) and (평일주말 = '평일') THEN '정시배달' WHEN (배달시간 <= 30) and (평일주말 = '주말') THEN '정시배달' ELSE '배달지연' END as "지연여부" FROM 주문정보 |
- CASE 문으로 조건 설정, 배달시간 비교 연산자 사용
- and 사용으로 추가적인 조건 설정, 평일주말 중 해당하는 조건 선택
- 위의 두 조건을 모두 만족했을 시 '정시배달' 출력
- 그 외의 모든 조건들은 지각이니 ELSE로 '배달지연' 출력
- END로 CASE 문 끝맺음
결과물
| 고객코드 | 음식점명 | 평일주말 | 배달시간 | 지연여부 | |
| 1 | 1001 | 식스맨 | 평일 | 24 | 정시배달 |
| 2 | 1002 | 피자리아 | 주말 | 27 | 정시배달 |
| 3 | 1003 | 스케스시 | 주말 | 32 | 배달지연 |
| 4 | 1004 | 셋찜닭 | 평일 | 25 | 정시배달 |
| 5 | 1005 | 단리향 | 평일 | 26 | 배달지연 |
| 6 | 1006 | 이겼동 | 주말 | 29 | 정시배달 |