알고리즘 문제 풀기/sql
프로그래머스: 재구매가 일어난 상품과 회원 리스트 구하기 - MySQL
Fo_rdang
2024. 8. 12. 20:19
반응형
문제 출처
https://school.programmers.co.kr/learn/courses/30/lessons/131536
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
`GROUP BY`와 `HAVING` 절은
- 데이터를 그룹화하고,
- 특정 조건을 만족하는 그룹만을 필터링한다.
## GROUP BY
- 데이터를 특정 컬럼 기준으로 그룹화하는 데 사용된다.
- USER_ID와 PRODUCT_ID 기준으로 데이터를 그룹화하고 있습니다.
- 예를 들어, USER_ID가 1이고 PRODUCT_ID가 101인 모든 행이 하나의 그룹으로 묶입니다.
## HAVING
- GROUP BY로 그룹화된 결과에 조건을 적용하는 데 사용된다.
- WHERE 절과 비슷하지만, WHERE 절은 개별 행에 조건을 적용하는 반면 HAVING 절은 그룹화된 데이터에 조건을 적용합니다.
- HAVING COUNT(*) >= 2는 행의 수가 2개 이상인 그룹만을 선택하겠다는 의미
- 즉, 특정 사용자가 동일한 상품을 두 번 이상 구매한 경우에만 그 그룹이 결과에 포함됩니다.
정답 코드
SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*) >= 2
ORDER BY USER_ID ASC, PRODUCT_ID DESC
반응형