SQL 알고리즘 코드카타

SQL 알고리즘 코드카타 18일차(2) 26.01.16(금)

nom_de_plume 2026. 1. 16. 09:55

부제:

재구매가 일어난 상품과 회원 리스트 구하기, 레벨 4

 

1. 문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/131536
2. 정답 코드: 

SELECT
    user_id,
    product_id
from online_sale
group by user_id, product_id
having count(product_id) >= 2
order by user_id asc, product_id desc


3. 오류 상황:

SELECT
    user_id,
    count(product_id) over (partition by user_id order by user_id) as product_id
from online_sale
group by user_id
order by user_id asc, product_id desc

=> 그룹화 기준 오류

=> HAVING 절 누락


4. 시도 방법:

=> WINDOW 함수 제거

=> 그룹화 기준 수정

=> HAVING 절 추가


5. 최종 문제 해결 방법:

=> HAVING절로도 충분한 문제이기 때문에 WINDOW 함수 제거

=> '어떤 유저(USER_ID)가 어떤 상품(PRODUCT_ID)을' 다시 샀느냐를 찾아야하기 때문에 GROUP BY에 두 컬럼 모두 작성

=> 특정 유저가 특정 상품을 재구매했다는 것은, 해당 그룹 내 데이터의 개수(COUNT)가 1보다 크다는 뜻이므로 HAVING절 사용