GROUP BY 는 행을 줄이지만, 윈도우 함수는 행을 그대로 두고 옆에 집계 값을 붙인다.
왜 그런지까지
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일 간격으로 다시 물어봅니다