본문 바로가기

DATA/SQL

[SQL 풀이] DataLemur - User's Third Transaction

모든 유저의 세 번째 거래에 대한 정보를 출력하는 쿼리를 만드는 문제

 

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)