Contents
내가 작성한 쿼리
아마존은 이것을 구매한 고객들도 공동 구매 패턴을 기반으로 구매한 기능을 구현하고자 합니다. 해결책을 작성하세요: 1. 동일한 고객이 자주 함께 구매하는 제품 쌍을 식별합니다(여기서 product1_id < product2_id) 2. 각 제품 쌍에 대해 두 제품을 모두 구매한 고객 수를 결정합니다 * 두 제품을 모두 구매한 고객이 최소 3명 이상인 경우 제품 쌍을 추천 대상으로 고려합니다. customer_count에 의해 내림차순으로 정렬된 결과 테이블을 반환하고, 동점일 경우에는 product1_id에 의해 오름차순으로, product2_id에 의해 오름차순으로 반환합니다.
내가 작성한 쿼리
MySQL, Oracle
SELECT pp1.product_id AS product1_id, pp2.product_id AS product2_id, pi1.category AS product1_category, pi2.category AS product2_category, COUNT(DISTINCT pp1.user_id) AS customer_count FROM ProductPurchases pp1 JOIN ProductPurchases pp2 ON pp1.user_id = pp2.user_id AND pp1.product_id < pp2.product_id -- 중복 방지 JOIN ProductInfo pi1 ON pp1.product_id = pi1.product_id JOIN ProductInfo pi2 ON pp2.product_id = pi2.product_id GROUP BY pp1.product_id, pp2.product_id, pi1.category, pi2.category HAVING COUNT(DISTINCT pp1.user_id) >= 3 -- 3명이상 구매한 경우 ORDER BY customer_count DESC, product1_id ASC, product2_id ASC;
Share article