14. SQL - 내가 틀린 것들 (#4)

Jason·2026년 1월 13일

SQL

목록 보기
14/47

SQL 내가 틀린 것들 #4 — ROW_NUMBER 문법 완전 정복

💡 ROW_NUMBER 문법이 계속 헷갈려서 집중 연습했다.
95점에서 시작해서 4연속 100점까지!


🔴 1. ROW_NUMBER 문법 순서 섞임

내가 쓴 거 (틀림)

PARTITION BY() OVER() dept_id ORDER BY salary AS rn

뭔가 다 섞여버렸다... ㅋㅋ

정답

ROW_NUMBER() OVER(PARTITION BY dept_id ORDER BY salary DESC) AS rn

교훈

순서 외우자!

ROW_NUMBER() OVER(PARTITION BY 그룹 ORDER BY 정렬 DESC) AS rn
└─ 함수 ──┘ └───────── 전부 OVER() 안에! ─────────┘
순서요소
1ROW_NUMBER()
2OVER(
3PARTITION BY 컬럼
4ORDER BY 컬럼 DESC
5)
6AS 별칭

PARTITION BY와 ORDER BY는 OVER() 안에 들어간다!


🟡 2. 괄호 안 닫음

내가 쓴 거 (틀림)

ROW_NUMBER() OVER(PARTITION BY store_id ORDER BY amount DESC AS rn
                                                            ↑ ) 빠짐!

정답

ROW_NUMBER() OVER(PARTITION BY store_id ORDER BY amount DESC) AS rn
                                                            ↑ 여기!

교훈

급하게 풀면 괄호 빠뜨림. AS 앞에 ) 있는지 확인!


🟡 3. 컬럼명 오타

내가 쓴 거 (틀림)

SELECT store_id, sales_id, amount
                 ↑ 's' 하나 더 붙음

정답

SELECT store_id, sale_id, amount

교훈

테이블 컬럼명 잘 보고 쓰자. 제출 전에 한 번 더 체크!


✅ 4. 최종 정복한 패턴

4문제 연속 100점 맞은 공식:

-- 그룹별 Top 1 공식
WITH ranked AS (
    SELECT 
        *,
        ROW_NUMBER() OVER(PARTITION BY 그룹컬럼 ORDER BY 기준컬럼 DESC) AS rn
    FROM 테이블
)
SELECT * 
FROM ranked 
WHERE rn = 1;

활용 예시

문제PARTITION BYORDER BY
부서별 최고 연봉dept_idsalary DESC
유저별 최근 주문user_idorder_date DESC
카테고리별 최고가 상품categoryprice DESC
매장별 최고 매출store_idamount DESC

📈 성장 기록

문제점수실수
복습 2-195점괄호, 오타
복습 2-2100점-
복습 2-3100점-
복습 2-4100점-

95점 → 100점 4연속! 🔥


📋 현재 상태

항목상태
JOIN 문법
GROUP BY + HAVING
LEFT JOIN + IS NULL
ROW_NUMBER✅ 완전 정복!
LAG🟢
날짜 범위🟡 연습 필요

💪 다음 목표

  • LAG 복습 문제 풀기
  • 날짜 범위 문제 더 연습
  • 복합 문제 도전

📝 ROW_NUMBER는 결국 순서 외우기다.
ROW_NUMBER() OVER(PARTITION BY ... ORDER BY ... DESC) AS rn
4번 반복하니까 손에 익었다!

profile
Data Analyst | Thoughts Become Things. 할 수 있다고 생각하면 할 수 있다. 할 수 없다고 생각하면 할 수 없다. | www.linkedin.com/in/명수-제-7ab843200

0개의 댓글