OkBublewrap

Card Launch Success 본문

개발/SQL

Card Launch Success

옥뽁뽁 2025. 3. 15. 14:51

Card Launch Success

문제

1. 각 신용카드의 출시 첫달이 가장 작은 값

2. 해당 출시 첫 달에 발급된 카드 수

3. 가장 많은 카드가 발급된 순서로 정렬

 

풀이

select card_name, issued_amount
from (
  select *,
    row_number() over (PARTITION by card_name order by issue_year asc, issue_month asc) as rn
  from monthly_cards_issued 
) sub1
where rn = 1
order by 2 desc

1️⃣ sub1: card_name 파티션, 연도가 낮고, 월이 낮은 순으로 순서 매기기

2️⃣ where: 순서가 1인 것만 출력

3️⃣ order by: issued_amount 가 큰 순서 대로

 

다른 풀이

해당 사이트 설명 부분에서는 날짜를 만들어서 날짜가 최솟값인 것을

Window절로 구해 where 절로 같은 것만 출력하게 했다.

WITH card_launch AS (
  SELECT 
    card_name,
    issued_amount,
    MAKE_DATE(issue_year, issue_month, 1) AS issue_date,
    MIN(MAKE_DATE(issue_year, issue_month, 1)) OVER (
      PARTITION BY card_name) AS launch_date
  FROM monthly_cards_issued
)

SELECT 
  card_name, 
  issued_amount
FROM card_launch
WHERE issue_date = launch_date
ORDER BY issued_amount DESC;

 

make_date

make_date([year int], [month int], [day int])

 

으로 구성이 되어있다.

 

'개발 > SQL' 카테고리의 다른 글

Histogram of Users and Purchases  (0) 2025.03.16
SQL Funnel 분석  (0) 2025.03.16
Compressed Mode  (0) 2025.03.15
Department vs. Company Salary  (0) 2025.03.15
User Shopping Sprees  (0) 2025.03.13