리포트를 query 하나로 만드는 고급 SQL
Window function 이 현재 row 와 관련된 row 에 걸쳐 값 계산, 그룹으로 collapse 안 함. CTE (Common Table Expression) 가 subquery 이름 + 재사용; 재귀 CTE 가 계층 데이터.
Window function 모양:
row_number() OVER (ORDER BY ...)— 정렬마다 sequential 번호.rank()/dense_rank()— competition-style 랭킹.sum(...) OVER (...)/avg(...) OVER (...)— running total, moving average.lag(col)/lead(col)— 이전/다음 row 값.partition by— partition 마다 window reset.
Tip: 재귀 CTE 가 SQLite 의 계층 일반 도구: 조직도, 파일 트리, 댓글 thread. 모양 항상
WITH RECURSIVE name AS (anchor UNION ALL recursive_step) SELECT .... 패턴 내재화하면 application-side traversal 코드 많이 교체.