알고리즘 문제 풀기/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
반응형