본문 바로가기
DATABASE

Q. 주문 건수가 많은 시간대 조회

by nyang2 2023. 11. 29.

필요 데이터 :

데이터 모두 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) 를 꼭 해주어야 한다.