-
<프로그래머스> 재구매가 일어난 상품과 회원 리스트 구하기코딩테스트/SQL 코딩테스트 2023. 12. 21. 21:53
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131536
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 문제 요구사항
- ONLINE_SALE에서 동일한 회원이 상품을 재구매한 데이터를 구해서
- 재구매한 회원의 ID와 재구매한 상품의 ID를 출력
- 결과는 ID를 기준으로 오름차순 정렬, ID가 같다면 상품 ID를 기준으로 내림차순 정렬
어떤 유저가 재구매한 상품 데이터를 알기 위해서는 USER_ID, PRODUCT_ID 2개로 GROUP BY를 해야한다.
근데 여기서 재구매를 했다는 것은 그룹을 지었을 때 조회되는 COUNT()의 수가 2개 이상이라는 것을 의미한다.
따라서 HAVING절을 GROUP BY의 조건으로 이용한다(HAVING COUNT(*) >= 2)
1) Oracle
SELECT USER_ID, PRODUCT_ID FROM ONLINE_SALE GROUP BY USER_ID, PRODUCT_ID HAVING COUNT(*) >=2 ORDER BY USER_ID, PRODUCT_ID DESC;
2) MySQL
SELECT USER_ID, PRODUCT_ID FROM ONLINE_SALE GROUP BY USER_ID, PRODUCT_ID HAVING COUNT(*) >=2 ORDER BY USER_ID, PRODUCT_ID DESC;
'코딩테스트 > SQL 코딩테스트' 카테고리의 다른 글
<프로그래머스> 자동차 대여 기록에서 장기/단기 대여 구분하기 (1) 2023.12.22 <프로그래머스> 조건에 맞는 사용자 정보 조회하기 (1) 2023.12.21 <프로그래머스> 과일로 만든 아이스크림 고르기 (2) 2023.12.21 <프로그래머스> 없어진 기록 찾기 (1) 2023.12.21 <프로그래머스> 최댓값 구하기 (1) 2023.12.21 - 문제 요구사항