[SQL문제풀기] 유량(Flow)와 저량(Stock) - 윈도우 함수

silver's avatar
Mar 24, 2025
[SQL문제풀기] 유량(Flow)와 저량(Stock) - 윈도우 함수
Contents
문제SQLite

문제

SQLite

내가 작성한 정답

with a as (select strftime('%Y',acquisition_date) year, count(artwork_id) ad from artworks group by year having year is not null) select year "Acquisition year", ad "New acquisitions this year (Flow)", sum(ad) over (order by year) "Total collection size (Stock)" from a order by 1
💡

윈도우 함수

: 주로 집계 함수와 함께 사용되며, 각 행에 대해 계산된 결과를 반환하지만, 그룹화된 결과와는 달리 전체 데이터 집합을 유지하면서도 특정 기준에 따라 계산한다.
<집계 함수> OVER ([PARTITION BY <컬럼>] [ORDER BY <컬럼>] [ROWS 또는 RANGE <범위>])
  • 집계 함수: SUM, AVG, COUNT, ROW_NUMBER, RANK, DENSE_RANK 등.
  • OVER: 윈도우 함수를 지정하는 키워드.
  • PARTITION BY: 데이터 집합을 특정 컬럼을 기준으로 나누는 부분. 이 부분이 없으면 전체 데이터 집합을 하나의 그룹으로 생각한다.
  • ORDER BY: 각 파티션 내에서 데이터의 정렬 순서를 지정한다.
  • ROWS 또는 RANGE: 특정 범위를 지정하여 윈도우를 정의하며 선택사항이다.
행 유지: 윈도우 함수는 각 행에 대해 계산된 결과를 반환하며, 원래의 데이터 구조를 유지한다. 집계와 분석: 집계 결과를 각 행에 함께 제공하여 더욱 풍부한 데이터 분석을 가능하게 한다. 파티셔닝: 그룹화된 집계와 달리, 파티셔닝을 통해 더 세밀하게 데이터를 나눌 수 있다.
SELECT column_name, SUM(column_name) OVER (PARTITION BY another_column) FROM table_name;
 
Share article

silver