CodingTest/SQL 고득점 Kit

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

  • -
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/131536

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

SQL 초보자 입장에서 약간 난이도가 있었던 문제에 대한 회고다 문제는 위 사이트에 나와 있으니 생략 하겠다.

 

정답

SELECT DISTINCT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
WHERE (USER_ID, PRODUCT_ID) IN (
    SELECT USER_ID, PRODUCT_ID
    FROM ONLINE_SALE
    GROUP BY USER_ID, PRODUCT_ID
    HAVING COUNT(*) > 1
)
ORDER BY 1, 2 DESC;

 

풀이

회원 아이디와 상품 코드가 같은 행이 2개 이상인 것을 조건에 넣어 추출하기로 했다. 

이때 나는 초심자기 때문에 조건은 WHERE 절이지!라는 생각에 조금 절여 저 있어 IN 옵션을 주고 WHERE 서브쿼리를  넣어 서브쿼리 안에서 회원 아이디와 상품 코드를 추출했다.

답은 쉽게 맞추긴 했으나 답 공유 부분에서 어떤 분이 WHERE 절 필요 없이 그냥 바로 GROUP BY 하신걸 보고 좀 더 유연하게 생각하자고 다짐했다. 그분 코드는 아래에 첨부한다.

 

SELECT USER_ID
     , PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*) >= 2
ORDER BY USER_ID, PRODUCT_ID DESC
728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.