본문 바로가기
SQL

[solvesql - day 23] 유량(Flow)와 저량(Stock)

by 우솨 2025. 1. 11.

 

https://solvesql.com/problems/flow-and-stock/

 

https://solvesql.com/problems/flow-and-stock/

 

solvesql.com

-- 작품의 취득 연도별로 취득된 작품 수를 계산하고, 해당 연도까지의 총 작품 수를 계산하는 쿼리

SELECT 
    -- 'acquisition_date'의 첫 4자리를 취득 연도로 추출하여 'Acquisition year'로 표시
    SUBSTRING(acquisition_date, 1, 4) AS 'Acquisition year',
    
    -- 각 연도별로 취득된 작품 수 계산
    COUNT(*) AS 'New acquisitions this year (Flow)',
    
    -- 'Total collection size (Stock)'는 해당 연도까지 누적된 작품 수 계산
    -- SUM(count(*)) OVER를 사용하여 전체 연도에서의 누적 작품 수를 계산
    SUM(COUNT(*)) OVER (ORDER BY SUBSTRING(acquisition_date, 1, 4)) AS 'Total collection size (Stock)'
    
FROM artworks  -- 'artworks' 테이블에서 데이터 조회
    
GROUP BY SUBSTRING(acquisition_date, 1, 4)  -- 취득 연도를 기준으로 그룹화
    
HAVING SUBSTRING(acquisition_date, 1, 4) IS NOT NULL  -- 취득 연도가 NULL이 아닌 경우만 필터링