【问题标题】:Mysql recursive substracting and multiplying grouped valuesMysql递归减法和乘法分组值
【发布时间】:2014-05-08 16:59:24
【问题描述】:

无法真正用文字解释我的问题,但我可以通过一个例子清楚地说明:

我有一张这样的桌子:

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

谢谢。

【问题讨论】:

    标签: mysql join recursion sum


    【解决方案1】:

    有趣的问题。不幸的是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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      • 1970-01-01
      • 2019-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多