필요 데이터 :
데이터 모두 instacart002.orders
주문번호 ➜ order_id
구매 시간 ➜ order_hour_of_day
조회방법
1. 시간대별 주문건수 조회
해석
시간대별로 묶어주기 위해 group by 를 사용하여 시간대로 그룹화해준다.
시간대별로 몇개의 주문건수가 있었는지 구하기 위해 count() 집계함수를 사용한다.
이때, 주문번호가 중복일 수 없기 때문에 distinct 를 이용하여 중복제거를 해준다.
2. 주문건수가 가장 많은 시간대 Top10 조회
이 때, 랭크함수를 사용하지 않고 조회해보기!
해석
(1) 번의 내용에서 주문건수 기준으로 순위를 구할 것이기 때문에
order by 를 이용하여 정렬해준다. 이때, 많은 것이 1등이어야 하기 때문에 내림차순 즉, desc 를 사용해주어야 한다.
그리고 이제 큰 순서대로 정렬이 되었으니 top10 만 조회하기 위해 limit 을 이용하여
출력 갯수를 10개로 제한한다.
다음과 같은 방법을 이용하면 서브쿼리, 랭크함수를 사용하지 않아도 손쉽게 조회할 수 있다.
Q. 첫 구매 후 다음 구매까지 걸린 평균 일 수
해석
' 첫 ' 구매를 기준으로 다음구매까지의 일 수를 구해야 하기 때문에 총 구매 횟수가 2번인 데이터로
계산을 해야한다.
그러기 위해서 조건절 where 을 이용하여 총 구매횟수 (order_number) = 2 로 조건을 준다.
평균 일수를 구하기 위해 평균을 구해주는 집계함수 avg() 를 사용하여 다음 구매까지 걸린 일 수의 평균을 구해준다. ➜ avg(days_since_prior_order)
Q. 주문 한 건당 평균 구매 상품 수
해석
문제를 이해해보자면,
한번 주문할 때 평균적으로 몇 개의 상품을 구매하냐는 것이 의도이다.
이를 계산하기 위해서는
총 판매 상품 수 / 주문 건 수 를 계산해주어야 한다.
이 때, 주문 건 수를 중복제거 해주어야 하는데, 이 이유는
만약, 제품을 6개 샀다고 했을 때 6개의 상품의 주문번호는 같게 된다. 하지만 6개의 제품을 구매했다고 6번 주문을 넣은 것이 아니기 때문에 중복을 제거해주어야 한다.
Q. 1인당 평균 주문 건수
해석
1인당 평균 주문 건수를 계산하기 위해서는
총 판매된 제품 수 / 구매자 수 를 계산해주어야 한다.
이 때, 구매자 수는 위에 문제와 마찬가지의 이유로 중복제거 (distinct) 를 꼭 해주어야 한다.
'DATABASE' 카테고리의 다른 글
Q. 고객등급별 주문 건수 조회 (0) | 2023.12.02 |
---|---|
Q. 재구매율이 가장 높은 상품 조회 (0) | 2023.11.30 |
Q. 장바구니에 가장 먼저 넣은 상품 조회 (2) | 2023.11.28 |
데이터베이스 instacart002 안에 있는 테이블 & 속성 (2) | 2023.11.28 |
Q. 리뷰내용 분석 (2) | 2023.11.27 |