헤맨 만큼 내 땅
[SQL] 공부하다 깨달은 (2) 본문
4주차 문제를 다시 풀어보고 있는데...
음, 어렵다. 자꾸 틀린다.
그래서 틀린 걸 고쳐가는 과정을 올려보려한다.
내가 조건한 문제는 이것이다.
[실습]
음식점의 평균 단가별 segmentation 을 진행하고, 그룹에 따라 수수료 연산하기
(수수료 구간 -
~5000원 미만 0.5%
~20000원 미만 1%
~30000원 미만 2%
30000원 초과 3%)
문제풀이 1차 시도
처음에 접근 방식은 이랬다.
1. 음식점 별 평균 단가를 구하는 것이니까 -> 음식가격%주문갯수
이렇게 평균 단가를 구하는 1차 서브 쿼리를 만든다.
2. 그리고 나서 그룹에 따라 수수료를 구하는 쿼리를 만들면 되겠지?
그렇게 만든 구조가 이거였다.
처음엔 음, 답 맞을 거 같은데? 하고 정답을 확인하는데 뭔가... 틀린거다. 뭐가 문제지?! 싶었다. 사실 나는 수학 똥멍충이라 수학적 사고에서 뭔가 잘못생각 했나..? 싶어서 다시 차근차근 오답노트해보기 시작했다.
문제풀이 2차 시도
음,,, 뭐가 문제일까?? 생각을 많이 해봤는데. 깨달은 게 있다. 문제를 보면 음식점의 평균 단가별 segmentation 라고 했다.
그렇다는 것은 음식하나당 평균 가격=price/quantity
이게 아니라 총금액/ 총 수량=sum(price)/sum(quantity)이 되어야한다.
이 되어야한다. 그니까
- 어떤 테이블에서 데이터를 뽑을 것인가 -> food_orders
- 어떤 컬럼을 이용할 것인가 -> restuarant_name,price, quantity
- 어떤 조건을 지정해야 하는가 -> X
- 4. 어떤 함수 (수식) 을 이용해야 하는가 -> case when~then~end, group by,avg(price/quantity)
찬찬히 생각해보니 뭔가 다른 게 보인다! 이제 다시 도전해보자!
아니!!!! 오류뜨는데!!! 뭐지. 뭘 어떻게 해야하는거지
문제풀이 3차 시도
난 바보였다. 바보 똥멍충이!!! 됐다!
풀었으니까 하나하나 설명을 해주겠다. 와 이걸... 왜몰랐니.
풀이
[실습]
음식점의 평균 단가별 segmentation 을 진행하고, 그룹에 따라 수수료 연산하기
(수수료 구간 -
~5000원 미만 0.5%
~20000원 미만 1%
~30000원 미만 2%
30000원 초과 3%)
이 문제에는 세개의 쿼리가 필요하다. 첫번째쿼리 : 음식점의 평균 단가별 segmentation 을 진행두번째 쿼리 : 계산한 단가별 수수료 퍼센트 지정세번째 쿼리 : 평균단가 * 수수료 계산 후 산출
나는 이 두번째쿼리와 세번째 쿼리를 한번에 한 쿼리에서
case when restaurant_avg_price < 5000 then restaurant_avg_price * 0.005
이런식으로 계산하려 했으니 당연히 안된거다.
case when restaurant_avg_price < 5000 then 0.005
우선 이렇게 평균 단가가 5천원이하인 가게라면 수수료가 0.05%로 지정된다. 를 먼저 설정해준뒤에 저장해주는 게 당연했던 것!
으휴으휴! 드디어 성공했다!
'데이터' 카테고리의 다른 글
[SQL] 자격증 준비 (1) SQlD란? (0) | 2025.04.13 |
---|---|
[SQL] 공부하다 깨달은 (4) (0) | 2025.04.11 |
[SQL] 공부하다 깨달은 (3) (0) | 2025.04.06 |
[SQL] 공부하다 깨달은 (1) (0) | 2025.04.03 |
[SQL] 기본문 구조 (0) | 2025.04.03 |