코딩테스트/프로그래머스
(MySQL LEVEL-2) 재구매가 일어난 상품과 회원 리스트 구하기 - 프로그래머스
고구마는호박고구마
2023. 5. 12. 00:07
USER_ID 가 재구매한 상품이 있는지 있다면 USER_ID와 PRODUCT_ID를 출력
위 테이블에서는 1번 유저가 3번,4번을 재구매 했고 2번이 4번을 재구매했다.
이와 같은 결과를 출력해라
이 문제를 풀기 앞서 알아야 하는 개념
GROUP BY 그룹바이는 컬럼리스트중 같다면 하나의 그룹으로 만들어 준다.
- 위의 테이블에서 GROUP BY USER_ID로 처리하게 된다면
1
2
3
의 그룹으로 묶인다.
하지만 저 문제에서는 하나의 컬럼이 아닌 두 개의 컬럼이 밑에서 중복이 된다면 그 두 개의 컬럼을 기준으로 중복된 값만 묶이길 원한다.
그렇다면 GROUP BY뒤에 2개의 컬럼을 설정해 주면 된다.
답
SELECT
USER_ID,
PRODUCT_ID
FROM ONLINE_SALE
GROUP BY 1,2
HAVING COUNT(product_id) >= 2
ORDER BY 1,2 DESC
해설
1. 1 컬럼과 2컬럼을 기준으로 그룹으로 묶는다.
2. 묶인 그룹의 개수가 2이상인것만 분류
3. 1 컬럼 내림차순 같다면 2컬럼을 기준
실행결과