我不能用语言来解释我的问题,但举一个例子我可以清楚地展示出来:
我有一张这样的桌子:
id num val flag
0 3 10 1
1 5 12 2
2 7 12 1
3 11 15 2
我要遍历所有的行,计算"num“的增加,然后用"val”值乘以这个差值。当我计算所有这些结果时,我想把这些结果加在一起,但是根据“标志”值分组。
这是数学方程式,我想在桌子上运行:
Result_1 = (3-0)*10 + (7-3)*12
Result_2 = (5-0)*12 + (11-5)*15
78 = Result_1
150 = Result_2
谢谢。
发布于 2014-03-29 03:00:46
有趣的问题。不幸的是,MYSQL
不支持recursive queries
,所以在这里您需要有一点创造性。像这样的东西可以起作用:
select flag,
sum(calc)
from (
select flag,
(num-if(@prevflag=flag,@prevnum,0))*val calc,
@prevnum:=num prevnum,
@prevflag:=flag prevflag
from yourtable
join (select @prevnum := 0, @prevflag := 0) t
order by flag
) t
group by flag
https://stackoverflow.com/questions/22726266
复制相似问题