mysql中统计累计值的方法

By | 2023-10-10

mysql中统计累计值的方法:

方法一:窗口函数

select  month
        ,dept
        ,val
        ,sum(val) over (PARTITION by dept order by dept,month) as leiji
from leiji;

方法二:使用变量

select  month
        ,dept
        ,val
        ,if(@dept=a.dept,@val:=@val+a.val,@val:=a.val) as leiji
        ,@dept
        ,@dept:=a.dept
from leiji a,(select @val:=0,@dept:='')b
order by 2,1;

方法三:使用join自联

select  a.month
        ,a.dept
        ,sum(b.val)
from leiji a
left join leiji b on a.dept = b.dept and a.`month` >= b.`month`
group by a.month,a.dept
order by 2,1;