[SELECT] 재구매가 일어난 상품과 회원 리스트 구하기

쥬쥬스·2023년 8월 21일
0

SQL

목록 보기
37/67
post-thumbnail

문제
ONLINE_SALE 테이블에서 동일한 회원이 동일한 상품을 재구매한 데이터를 구하여, 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문을 작성해주세요. 결과는 회원 ID를 기준으로 오름차순 정렬해주시고 회원 ID가 같다면 상품 ID를 기준으로 내림차순 정렬해주세요.

💡 조건

  • 동일한 회원이 동일한 상품을 재구매한 경우
  • 재구매한 회원 ID, 상품 ID 출력
  • 회원 ID 기준 오름차순, 상품 ID 기준 내림차순

sql 코드

SELECT user_id, product_id
FROM online_sale
GROUP BY user_id, product_id
HAVING count(product_id)>1
ORDER BY user_id ASC, product_id DESC
  1. 동일한 회원이 동일한 상품을 재구매한 경우
    • 동일한 회원과 상품이므로 group by로 두개를 묶는다
    • 두개로 그룹을 지었기 때문에 count 함수 안에는 어떤게 들어가도 상관없다
    • 재구매 기준이니까 1개보다 큰 경우를 가져오기
	GROUP BY user_id, product_id
	HAVING count(product_id)>1
  1. 재구매한 회원 ID, 상품 ID 출력
	SELECT user_id, product_id
  1. 회원 ID 기준 오름차순, 상품 ID 기준 내림차순
	ORDER BY user_id ASC, product_id DESC

너무 어렵게 생각한건지 모르겠는데 문제를 해결하기가 꽤나 까다로웠다. sales_amount값을 신경써야되는건가해서 헤매기도 하고, group을 지을때 한가지만 묶어줘야된다고 생각해서 헤매기도 했다. 조건을 동시에 만족하면서 재구매가 일어나기만 하면 되므로 group by를 2가지 조건을 사용하면 되는 문제였다.

profile
느려도... 꾸준히.....🐌

0개의 댓글