모든 유저의 세 번째 거래에 대한 정보를 출력하는 쿼리를 만드는 문제
RANK함수를 이용해서 user_id 내 순위를 구하는 쿼리를 만든다.
SELECT user_id,
spend,
transaction_date
FROM (
SELECT user_id,
spend,
transaction_date,
ROW_NUMBER() OVER (
PARTITION BY user_id
ORDER BY transaction_date) AS row_num
FROM transactions
) AS trans_num
WHERE row_num = 3;
1. RANK: 동일한 숫자가 있으면 제외하고 출력(1, 1, 3)
2. DENSE_RANK: 동일한 숫자가 있더라도 제외하지 않고 모두 출력 (1, 1, 2, 3)
3. ROW_NUMBER: 동일한 값이라도 고유한 숫자를 부여함 (1, 2, 3, 4, 5)
'DATA > SQL' 카테고리의 다른 글
SQL을 활용한 RFM 분석 (0) | 2025.02.27 |
---|---|
SQL: Leet code 문제풀이(570, 1934, 620) (1) | 2025.01.23 |
SQL풀이: Leetcode 1661. Average Time of Process per Machine (2) | 2025.01.15 |
SQL: LAG 함수 활용하여 현재 데이터와 이전 데이터를 비교 (1) | 2025.01.09 |
241211 SQL 코드카타(조건에 맞는 사용자 정보 조회하기, 조건에 부합하는 중고거래 상태 조회하기, 취소되지 않은 진료 예약 조회하기) (3) | 2024.12.11 |