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 정시배달