SQL 기본 및 활용
🗄️ SQLSQL 활용★★★★★거의 매회

윈도우 함수 — 묶지 않고 집계한다

GROUP BY 는 행을 줄이지만, 윈도우 함수는 행을 그대로 두고 옆에 집계 값을 붙인다.

OVERPARTITION BYRANKDENSE_RANKROW_NUMBERLAGLEAD

왜 그런지까지

OVER 절이 붙으면 윈도우 함수다. PARTITION BY 로 묶을 범위를 정하고, ORDER BY 로 그 안의 순서를 정한다.

순위 함수는 셋이 갈린다 — RANK 는 같은 순위 뒤를 건너뛰고(1,1,3), DENSE_RANK 는 건너뛰지 않으며(1,1,2), ROW_NUMBER 는 같아도 무조건 다른 번호를 준다(1,2,3). LAG·LEAD 는 앞뒤 행의 값을 끌어온다.

돌려 보기

세 순위 함수를 한 줄에 놓고 비교

헷갈리는 것

RANK vs DENSE_RANK

동점이 있으면 RANK 는 다음 순위를 건너뛰고(1,1,3), DENSE_RANK 는 건너뛰지 않는다(1,1,2).

GROUP BY vs 윈도우 함수

GROUP BY 는 여러 행을 하나로 줄이고, 윈도우 함수는 행을 그대로 둔 채 옆에 값을 붙인다.

확인 문제

넣어 두면 오늘 · 1일 · 3일 · 7일 · 14일 · 30일 간격으로 다시 물어봅니다