먼저, count(*)로 변수를 따로 만들어 회원과 상품마다 몇번의 결제가 일어났느니 파악한다.
select user_id, product_id
from
(
select user_id, product_id, count(*) purchase_count
from online_sale
group by user_id, product_id
)a
where purchase_count >= 2
그리고 서브쿼리에서 조건을 걸어 판매가 2번 이상 일어난 것을 조회한다.
또 하나는 재구매의 특성을 이용해 하나의 데이터를 2개로 나눈 것이다.
select distinct a.user_id, a.product_id
from online_sale a join online_sale b on a.user_id = b.user_id
and a.product_id = b.product_id and a.sales_date <> b.sales_date
재구매는 A유저가 상품 B를 2번 구매하는 행위이다. 동일한 사람이 동일한 상품을 구매하지만 날짜는 다르다. 그래서 데이터를 2개로 나누고 날짜라 다른것만 조회하도록 한다.
그럼 2번의 구매가 이루어져 (A, B) (A,B) 가 출력되는데 distinct를 넣어 중복값을 없애준다.