[코딩테스트]/[SQL]

[StrataScratch - SQL] (Medium) Finding User Purchases

잰잰' 2025. 5. 6. 12:56

문제

두 번째 구매를 이전 구매 후 7일 이내에 한 사용자를 찾아서 반환하는 활성 사용자 목록을 식별하세요. 이 사용자들의 user_id 목록을 출력하세요.

 

테이블설명

 

예상결과

 

✏️ 풀이

SELECT DISTINCT a1.user_id
FROM amazon_transactions AS a1
JOIN amazon_transactions AS a2 ON a1.user_id = a2.user_id AND a1.id <> a2.id
    AND DATEDIFF(a2.created_at, a1.created_at) BETWEEN 0 AND 7
ORDER BY a1.user_id;

1. amazon_transactions 테이블 조인

2. 같은 사용자들의 다른 주문건으로 조인해야하기 때문에 user_id는 같고 id는 다른 조건으로 조인

3. "DATEDIFF(a2.created_at, a1.created_at) BETWEEN 0 AND 7" 주문 날짜의 차이가 7일 이내인 것을 찾는 조건 추가