2024.11.10 TIL(주말)

[TIL]

SQL

문자/숫자 계산을 했더니 오류가 날 때

숫자가 포함되어 있지만 문자 형으로 저장이 되어있을 수 있다.

(출력 결과 컬럼명 옆의 ‘ABC’ 혹은 ‘123’ 을 확인해야한다. ‘ABC’ 는 문자로 저장이 되어있다는 의미)

 

문자, 숫자를 혼합하여 함수에 사용 할 때에는 데이터 타입을 변경해주어야 하

그때 쓰는 코드 : 

#숫자로 변경
cast(if(rating='Not given', '1', rating) as decimal) 

#문자로 변경
concat(restaurant_name, '-', cast(order_id as char))

 

 

 

[실습] 주문 시기와 음식 수를 기반으로 배달할증료 구하기

(주문 시기 : 평일 기본료 = 3000 / 주말 기본료 = 3500 음식 수 : 3개 이하이면 할증 없음 / 3개 초과이면 기본료 * 1.2)

 

내가 작성한 코드 :

SELECT restaurant_name, 
       order_id,
       CASE 
           WHEN day_of_the_week = 'Weekday' THEN 3000 * IF(quantity > 3, 1.2, 1)
           WHEN day_of_the_week = 'Weekend' THEN 3500 * IF(quantity > 3, 1.2, 1)
       END AS '배달할증료'
FROM food_orders;

내가 작성한 코드 결과값

 

 

정답 코드 : 

select order_id,
       price,
       quantity,
       day_of_the_week,
       if(day_of_the_week='Weekday', 3000, 3500)*(if(quantity<=3, 1, 1.2)) "할증료"
from food_orders

 

정답 코드의 결과값

 

 

 

결과값 분석 : 나는 case 구문과 if구문을 혼용하여 코드를 작성했는데 정답 코드를 보니까 if 구문으로만 작성이 되었다.

결과값은 내가 select에 order_id를 추가했으면 같지만, 정답의 코드가 좀 더 간결하다. 여러 문제를 풀어보면서 어떻게 풀면 간편한지 좀 더 고민해봐야겠다.

 

 

'Today I learned' 카테고리의 다른 글

Pythone3 Day 1 출력 문제  (0) 2024.11.12
2024.11.11 TIL(AI 9기)  (2) 2024.11.11
2024.11.08 TIL(AI 9기)  (3) 2024.11.08
본캠프 커리큘럼  (0) 2024.11.08
2024.11.07 TIL 4(AI_9기)  (3) 2024.11.07