today_is

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

카테고리 없음

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

ye_rang 2024. 6. 26. 11:20

https://school.programmers.co.kr/learn/courses/30/lessons/131536

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(1) > 1
ORDER BY USER_ID ASC, PRODUCT_ID DESC;


문제 예시를 보면 GROUP BY를 이용해야 한다.

USER_ID와 PRODUCT_ID를 그룹으로 묶어 COUNT를 사용하면 재구매가 발생했는지 여부를 확인할 수 있다.

이때, COUNT(1) > 1의 조건은 WHERE이 아닌, HAVING으로 걸어줘야 한다. 그룹화 되기 이전에 조건을 체킹하는 것이 아니라, 그룹화 이후 조건을 체크하는 것이기 때문이다.


처음에 조건을 where로 걸어줬었는데 틀렸었다
무엇을 고쳐야하는지 찾지 못하다가
다시 문제를 살펴보니 그룹화 이후에 조건을 체크하는 것이 맞는 방법이라 판단하였다 !