(DB) Oracle/SQL.통계-Over함수

Oracle - OVER 예제3

농부지기 2017. 1. 21. 13:35

[ Oracle - OVER 예제3 ]

 

SUM_AMT     : OVER()함수안에 PARTITION BY의 SHOP 그룹을 대상으로 SUM()이 수행 됨
   SHOP_SEQ_SUM_AMT : OVER()함수안에 PARTITION BY와 ORDER BY 를 사용하면
                      SHOP을 그룹으로 하고, YM(년월)을 정렬한 후 첫번째ROW~ 현재ROW 까지의 SUM()이 
                      수행 됨

 


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(PARTITION BY SHOP)             AS SHOP_SUM_AMT
     , 
SUM(AMT) OVER(PARTITION BYSHOP ORDER BY YM)  AS SHOP_SEQ_SUM_AMT
  
FROM T
 
ORDER BY SHOP, YM  ;