0

我想从数据集的总计中减去每个有序行的值。总数为 2,014,217,这是数据集中所有视图的总和。这是下面的数据集以及我正在寻找的内容:

viewing           | views  | total  
------------------------------------
a0100             | 236303 | 1777914
a0100|a0101       |   9260 | 1768654
a0100|a0101|a0102 |  26670 | 1741984

总数将是总计减去 236,303,即 1,777,914,然后下一个总数是 1,777,914 减去 9,260,即 1,768,654,依此类推。

有人可以帮忙吗?

谢谢,

4

1 回答 1

0

您可以使用变量来跟踪前一行的值。

试试这个解决方案:

SELECT     @vw:=CONCAT(@vw, '|', a.viewing) AS viewing
           a.views,
           CASE @total 
               WHEN 0 THEN @total:=b.viewsum - a.views
               ELSE        @total:=@total - a.views
           END AS total
FROM       tbl a
CROSS JOIN (SELECT SUM(views) AS viewsum FROM tbl) b
CROSS JOIN (SELECT @vw:='') vw_init
CROSS JOIN (SELECT @total:=0) total_init
于 2012-07-31T21:07:45.090 回答