부제:
재구매가 일어난 상품과 회원 리스트 구하기, 레벨 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절 사용
'SQL 알고리즘 코드카타' 카테고리의 다른 글
| SQL 알고리즘 코드카타 19일차(1) 26.01.17(토) (0) | 2026.01.17 |
|---|---|
| SQL 알고리즘 코드카타 18일차(3) 26.01.16(금) (0) | 2026.01.16 |
| SQL 알고리즘 코드카타 18일차(1) 26.01.16(금) (0) | 2026.01.16 |
| SQL 알고리즘 코드카타 17일차(3) 26.01.15(목) (0) | 2026.01.15 |
| SQL 알고리즘 코드카타 17일차(2) 26.01.15(목) (1) | 2026.01.15 |