2016-07-12 8 views
1

제품별로 월별로 매출을 기록하는 데이터 세트가 있습니다. 나는과 같이 회원으로 수익을 요약 할 수 있습니다오라클 SQL의 월별 변화량 계산

select sum(revenue), member, month from member_revenue group by member, month 

나는 달의 변화에 ​​달 계산할 멤버에 의하여 수익이며, 이상적으로는 두 번째 테이블의 데이터를 호출 할 필요없이.

+1

오라클의 버전은 무엇입니까? – Ditto

+0

Oracle SQL 개발자 4.0.1 –

답변

0

그냥 lag()을 사용합니다 :

select member, month, sum(revenue) as this_month_revenue, 
     lag(sum(revenue)) over (partition by member order by month) as last_month_revenue 
from member_revenue 
group by member, month; 

참고 : 모든 월에 수익이 있다고 가정합니다. LAG()은 이전 달이 아니더라도 이전 행의 수익을 얻습니다.

1

당신은 내부 쿼리로 당신이 이미 가지고있는 쿼리를 사용하고 lag 윈도우 기능을 사용하여 각 달, 지난 달의 수익을 빼는 외부 쿼리로 포장 할 수 있습니다

SELECT member, 
     month, 
     month_revenue, 
     month_revenue - 
     LAG(month_revenue) OVER (PARTITION BY member 
           ORDER BY month ASC) AS revenue_change 
FROM (SELECT member, month, SUM(revenue) AS month_revenue 
     FROM  member_revenue 
     GROUP BY member, month) t 
+0

감사합니다. 약간의 업데이트는 '월별'문구에서 '월별'문구를 생략해야한다고 생각합니다. –

+0

@JamieEdgecombe 물론 맞습니다. 얼마나 창피한가. 수정 및 수정 됨. – Mureinik