헤맨 만큼 내 땅
[SQL] 공부하다 깨달은 (3) 본문
문제
[실습] 음식 타입별 총 주문수량과 음식점 수를 연산하고, 주문수량과 음식점수 별 수수료율을 산정하기
- (음식점수 5개 이상, 주문수 30개 이상 → 수수료 0.5% 음식점수 5개 이상, 주문수 30개 미만 → 수수료 0.8% 음식점수 5개 미만, 주문수 30개 이상 → 수수료 1% 음식점수 5개 미만, 주문수 30개 미만 → 수수로 2%)
1차 문제 풀이 시도
음식 타입별 총 음식점 수를 계산하는 것 까진 성공한 듯 했다. 그러나 음식 타입별 총 주문수량이 (sum(quantity)) 가 뭔가... 뭔가 오류 난거같다. 그래서 고민해보다가 내가 음식점 수를 먼저 구한 탓이 아닐까 싶었다.
그래서 다시 이번엔 총주문 수령 부터 구한 후 총주문 수량 쿼리를 서브쿼리로 뺀 후, 음식점 수를 구하는 방향으로 가보기로했다. 그 다음에 수수료 산정하고, 수수료 계산하면 되지 않을까.
자 다시해보자.
2차 문제풀이 시도
select sido,cuisine_type,sum_quan,count_reata,substr(avg_price,1,5),
case when sum_quan >=5 and count_reata>=30 then 0.005
when sum_quan >=5 and count_reata<30 then 0.008 when sum_quan <5 and count_reata>=30 then 0.01 when sum_quan <5 and count_reata<30 then 0.02 end fee from (select cuisine_type,avg(price) avg_price,substr(addr,1,2) sido, sum(quantity) sum_quan, count(distinct restaurant_name) count_reata from food_orders group by 1 )a |
풀었다! 풀어보니 총주문 수량과 음식점 수는 한번에 첫 쿼리에서 계산할 수 있더라. 여기서 내가 간과한 점은 겹치는 음식점 명이 있을 수 있으니 distict를 써서 겹치는 음식점 명이 없도록 카운트 해야한다는 점이었다.
'데이터' 카테고리의 다른 글
[SQL] 자격증 준비 (1) SQlD란? (0) | 2025.04.13 |
---|---|
[SQL] 공부하다 깨달은 (4) (0) | 2025.04.11 |
[SQL] 공부하다 깨달은 (2) (0) | 2025.04.06 |
[SQL] 공부하다 깨달은 (1) (0) | 2025.04.03 |
[SQL] 기본문 구조 (0) | 2025.04.03 |