Mysql 如何获得上个月和截至本月的累计总额?
从上表中,我需要获得截至本月和上个月审批人和索赔人的累计金额,以及本月审批人和基于承包商的索赔金额。如下表所示Mysql 如何获得上个月和截至本月的累计总额?,mysql,sql,sum,greatest-n-per-group,Mysql,Sql,Sum,Greatest N Per Group,从上表中,我需要获得截至本月和上个月审批人和索赔人的累计金额,以及本月审批人和基于承包商的索赔金额。如下表所示 ID pcID contractor approver claimed ------------------------------------------- 1 1 one 1000 900 2 1 two 200 100 3 1 three
ID pcID contractor approver claimed
-------------------------------------------
1 1 one 1000 900
2 1 two 200 100
3 1 three 1000 1000
4 1 six 100 11
5 2 six 100 22
6 3 six 120 1
7 4 three 102 10
提前感谢。您似乎想要每个
承包商的最新一行,如pcID
所定义,以及之前所有月份的累计总和
您可以使用窗口功能:
ID contractor approver claimed uptothisMTApprover uptothisMTClaimed previousMTApprover previousMTClaimed
-----------------------------------------------------------------------------------------------------------------
1 one 1000 900 1000 900 0 0
2 two 200 100 200 100 0 0
3 three 102 10 1102 1010 1000 1000
4 six 120 1 320 34 200 33
您的数据中的月份是多少?pcID表示月份(每月发布的付款证书)审批人和索赔列是当前月份的金额数据。你能帮我进来吗that@keerthiseelan:窗口函数的排序顺序错误。。。修正。谢谢你为我花费宝贵的时间。欢迎@Keerthiselan。如果我的答案正确回答了您的问题,请单击复选标记。
select contractor, approver, claimed,
total_approver as uptothisMTApprover,
total_claimed as uptothisMTClaimed,
total_approver - approver as previousMTApprover,
total_claimed - claimed as previousMTClaimed
from (
select t.*,
row_number() over(partition by contractor order by pcID desc) rn,
sum(approver) over(partition by contractor) total_approver,
sum(claimed) over(partition by contractor) total_claimed
from mytable t
) t
where rn = 1