☞ YM_SEQ_SUM_AMT : OVER()함수안에 ORDER BY 를 사용하면 YM(년월)을 정렬한 후 첫번째ROW~ 현재ROW 까지의 SUM()이 수행 됨 중요 : 이 때 SHOP, YM으로 정렬 후 같은 SHOP, YM이 존재 시 같은 순서로 본다. YM_SEQ_SUM_AMT : OVER()함수안에 ORDER BY와 ROW를 사용하면 SHOP, YM(년월)을 정렬한 후 첫번째ROW~ 현재ROW 까지의 SUM()이 수행 됨 중요 : 이 때 위 SQL 문과 다른점은 CURRENT ROW를 했기 때문에 같은 SHOP, YM도 각각 ROW로 인식 한다. ROWS절 : 물리적인 단위에 의해 윈도우 크기 지정
|
|
WITH T AS ( SELECT 'GS몰' AS SHOP, '201405' AS YM, 22000 AS AMT FROM DUAL UNION ALL SELECT 'GS몰' , '201409' , 55000 FROM DUAL UNION ALL SELECT 'GS몰' , '201412' , 55000 FROM DUAL UNION ALL SELECT '양동점' , '201401' , 10000 FROM DUAL UNION ALL SELECT '양동점' , '201401' , 20000 FROM DUAL UNION ALL SELECT '양동점' , '201401' , 11000 FROM DUAL UNION ALL SELECT '양동점' , '201403' , 22000 FROM DUAL UNION ALL SELECT '양동점' , '201405' , 33000 FROM DUAL ) SELECT SHOP, YM , SUM(AMT) OVER(ORDER BY SHOP, YM ASC) AS YM_SEQ_SUM_AMT , SUM(AMT) OVER(ORDER BY SHOP, YM ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) AS YM_SEQ_SUM_AMT FROM T ORDER BY SHOP, YM ;
|