본문 바로가기
DATABASE

Q. 특정구매자가 구매한 상품 조회

by nyang2 2023. 12. 5.

특정 구매자

가장 많이 판매된 상품 Top2 제품을 모두 구매한 구매자 !

 

 

필요 데이터 :

mydata002.dataset3 사용

고객 ID ➜ customerID

상품번호 ➜ StockCode

판매수량 ➜ Quantity

 

조회방법

 

1. 제품별 판매수량 조회

해석
제품별로 묶어주기 위해 group by 를 이용해 그룹화 해준다.
판매수량을 조회하기 위해서 sum() 합계 집계함수를 이용해  제품별 판매수량을 조회한다. 그리고 보기 편하도록 컬럼명을 QTY 로 설정해준다.

 

 

2. 가장 많이 판매된 상품 Top2 조회

서브쿼리를 이용해서 순위산출 함수를 사용할 수 있지만, 빠르게 하기 위해
(1) 번의 내용에서 판매수량 순서로 정렬을 해준 후 상위 2개만 출력되도록 한다.
판매수량 순으로 정렬하기 위해서는 order by 를 사용하고 큰 것이 위로 출력되어야 하기 때문에 desc 를 사용한다.
상위 2개만 출력하기 위해  limit 을 이용해 출력 갯수를 제한한다.

결과 : 가장 판매가 많이 된 상품은 '84077', '85123A' 상품이다.

 

 

3. '84077' 와 '85123A' 상품을 모두 구매한 고객 조회 후 테이블화

테이블명 = B_list

해석
고객ID 를 조회할 건데 이때

case when 을 이용하여 84077 을 구매했으면 1, 구매하지 않았으면 0

max() 를 씌워서 1이 나오게 되면 84077 상품을 구매한 고객이다

&& 그리고

case when 을 이용하여 85123A 을 구매했으면 1, 구매하지 않았으면 0

max() 를 씌워서 1이 나오게 되면 85123A 상품을 구매한 고객이다

이렇게 조회된 고객은 '84077' 와 '85123A' 상품을 모두 구매한 고객이다.

이 데이터를 테이블화 해준다. 

 

 

4. (3) 번에서 조회된 구매자가 구매한 제품 리스트 조회 (이때, top2 제품은 제외하고 조회)

해석

조건 1. customerID 가 B_list 에 잇는 customerID 와 동일해야 한다.
customerID in (select customerID from mydata002.B_list)

조건 2. stockCode 가 '84077' 와 '85123A' 아니어야 한다.
StockCode not in ('84077', '85123A')

이 두개의 조건을 모두 만족해야 하기 때문에 and 로 연결해준다.

'DATABASE' 카테고리의 다른 글

Q. 코흐트 분석  (0) 2023.12.06
(MySQL 기준) 동작 순서  (0) 2023.12.04
Q. 고객등급별 주문 건수 조회  (0) 2023.12.02
Q. 재구매율이 가장 높은 상품 조회  (0) 2023.11.30
Q. 주문 건수가 많은 시간대 조회  (0) 2023.11.29