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