[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 |