<문제>
2020년 7월 요일별 Daily Revenue를 구해주세요. 어느 요일이 Revenue가 가장 높고 낮나요?
문제는 대부분 위의 표처럼 purchase, visit, customer라는 3개의 테이블에서 각각 데이터를 뽑아내는 것이었다.
DAU, MAU 뽑아내기 등등 문제 없이 쭉쭉 진행하던 도중 나에게 시련이 찾아왔다..!
" 요일별 daily revenue" 가 뭐지..????? 요일별로 매출이 얼마 나오는지 구하라는건데,, 그럼 요일별로 그룹화 해서 매출 AVG 하면 되는거 아닌가?
응 아니야!!!
▶ 올바른 이해: 요일별 Daily Revenue를 구하라 = 월요일을 예시로 들자면,
한달 동안에 월요일이 총 4번 OR 5번이 있는데
그 4-5번의 월요일들이 각각 총 매출이 있을것이다.
그 총매출 4-5개의 AVG를 구해야 월요일의 daily revenue가 나오는 것이다!
즉 한달동안 월요일엔 총매출이 평균적으로 얼마나 나오니? 를 묻는것이다.
답을 보고 쿼리는 이해했는데 왜 이렇게 구해야 하는지 이해하기까지 꽤 오랜시간이 걸렸다.... ㅠㅠ 조건에 맞춰서 테이블을 새로 구성하고 원하는 데이터를 뽑아내는 것이 아직은 익숙하지 않다..!
▶ 내 생각이 틀린 이유: 내 생각 = 요일별로 그룹화 해서 AVG 때려버리자!
> 이렇게 하면 월요일에 찍히는 매출이 100원 부터 1,000,000.. 까지 다양할 것이다
나는 이 금액들을 평균하는 것이고 이건 '매출 금액의 평균'에 해당하는거지,
월요일마다 매출이 얼마정도 나오는지를 구하는 것이 아니다!
<해답>
1. 일자별 그룹화를 통해 총매출을 구한다. ∵ 일자별 총매출을 구하면 총 30일의 총매출이 나올 것
결과가 아주 잘뽑혔다. 30일 동안의 총 매출의 합이 잘 나왔다!
2. 1번 쿼리를 서브쿼리로 넣어두고, 요일별 그룹화를 한 뒤 AVG(revenue)을 구한다 ∵ 일자로 나눠진 표를 다시 요일별로 구분 > 요일마다 총매출이 4-5-개 나오겠지? 그것을 평균하면 바로 '요일별 평균 revenue'
결과가 아주 잘나왔다! 내 이해가 맞은듯 하다 😁😁
여기서 OREDER BY 를 통해 요일 순으로 정리해주는게 더 좋겠다!
'MY SQL > SQL 문제 풀이' 카테고리의 다른 글
[SQL 공부] WINDOW_FUNCTION 윈도우 함수 OVER 완벽 이해 정리 (2) | 2024.11.29 |
---|---|
[SQL 오답노트] LEET CODE 1204. Last Person to Fit in the Bus (1) | 2024.11.29 |
[SQL 문제 풀이] Hacker Rank 문제 풀이_해커랭크 문제 풀이 _ mysql 데이터베이스 기초 쿼리 짜기 (1) | 2024.05.02 |
[SQL 문제 풀이] Hacker Rank 문제 풀이_해커랭크 문제풀이 mysql _ 기초 쿼리 짜기 (5) | 2024.04.30 |