Today I learned !


1️⃣ 학습 키워드

SQL Window Function (윈도우 함수)

  • ROW_NUMBER(), RANK(), DENSE_RANK()
  • OVER(PARTITION BY ... ORDER BY ...)

2️⃣ 오늘 학습 내용

오늘은 SQL 윈도우 함수(Window Function) 중에서 특히 ROW_NUMBER(), RANK(), DENSE_RANK()의 차이점을 집중적으로 학습했다.
이는 단순 집계 함수(SUM(), AVG() 등)와 달리 결과를 그룹별로 나누어 정렬하고, 각 행에 순위를 매기는 함수다.

  • 📊 예시 테이블: 광고 캠페인별 일일 클릭 수

    campaigndateclicks
    A2024-01-01100
    A2024-01-02100
    A2024-01-0380
    B2024-01-01200
    B2024-01-02150
    SELECT 
     campaign,
     date,
     clicks,
     RANK() OVER(PARTITION BY campaign ORDER BY clicks DESC) AS rnk
    FROM ads;

    이 쿼리는 각 캠페인별로 클릭 수 기준 상위 순위를 매겨준다.

3️⃣ 학습하며 어려웠던 점 및 해결 방법

😕 어려웠던 점

  • RANK()DENSE_RANK()의 차이, 그리고 ROW_NUMBER()의 동작 방식이 처음에는 헷갈렸다.
  • 예를 들어, 동일한 클릭 수를 가진 행이 있을 경우 RANK()는 순위를 건너뛰고, DENSE_RANK()는 연속된 순위를 준다는 점이 직관적이지 않았다.

🔧 해결 방법

  • 직접 다양한 케이스로 쿼리 실행 → 각 함수가 어떤 결과를 도출하는지 눈으로 확인
  • ChatGPT로 개념 설명 & 예시 재확인
  • 엑셀로 데이터를 정렬하고 직접 순위를 부여해보며 비교
    → 이런 반복 실습을 통해 함수별 차이를 체감적으로 이해할 수 있었고, 특히 ROW_NUMBER()동일 값이라도 무조건 고유한 순위를 준다는 점이 확실히 정리되었다.

4️⃣ 오늘의 인사이트

  • 윈도우 함수는 그룹화된 데이터를 행 단위로 분석할 수 있는 유연한 도구라는 점에서 단순 집계 이상의 가치를 가진다.

  • 특히 마케터 입장에서 다음과 같은 활용이 가능함을 깨달았다

    ✅ 캠페인별 상위 실적 광고 추출
    ✅ 유저별 첫 방문 이후 재구매까지의 기간 계산
    ✅ 동일 집단 내에서의 퍼포먼스 비교 분석

  • 기존에는 GROUP BY로만 해결하려 했던 문제들이 있었지만, 윈도우 함수를 쓰면 더 정밀하고 직관적인 분석이 가능하다는 점이 오늘의 가장 큰 배움이었다.

5️⃣ 내일 할 일 정리

  1. SQL 예시문제 개별 학습
  2. SQL 함수 공부하기

🍀 TOD (Thought of the day)

삶이란 SELECT와 WHERE 사이를 반복하는 여정이다.

0개의 댓글