본문 바로가기
Coding Test/SQL Coding Test

[프로그래머스 / SQL] - 재구매가 일어난 상품과 회원 리스트 구하기

by nam_ji 2024. 10. 31.

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

문제

  • 의류 쇼핑몰의 온라인 상품 판매 정보를 담은 ONLINE_SALE 테이블이 있습니다.
  • 테이블은 ONLINE_SALE_ID, USER_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE의 컬럼이 존재하고
    각각 온라인 상품 판매 ID, 회원 ID, 상품 ID, 판매량, 판매일을 나타냅니다.
  • 문제
    1. 동일한 회원이 동일한 상품을 재구매한 데이터를 구하여,
    2. 재구매한 회원 ID와 재구매한 상품 ID를
    3. 회원 ID 기준 오름차순, 회원 ID가 같다면 상품 ID를 기준으로 내림차순 정렬하여 출력하는 문제입니다.


프로그래머스 코드

  • 먼저 조회하고 싶은데 컬럼부터 SELECT 뒤에 작성해줍니다.
  • FROM으로 해당 컬럼이 존재하는 테이블 명을 작성하고
  • GROUP BY로 특정 컬럼을 기준으로 그룹화를 시켜줍니다.
  • 이후 HAVING절에 PRODUCT_ID를 COUNT 함수로 갯수를 파악했을 때 그 값이 2 이상이면이라는 조건을 주고
  • 마지막으로 ORDER BY를 통해 정렬을 해주면 해결할 수 있습니다.
-- 코드를 입력하세요
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;