2012-07-31 50 views
0

我想從總數據集中減去每個有序行的值。總數爲2,014,217,這是數據集中所有視圖的總和。這裏是低於設定的數據和我所期待的:如何編寫一個查詢以滾動總計中的減法來創建衰減曲線

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

總將是總計減去236303是1777914那麼接下來的總量減去1777914其中9,260是1768654等。

有人可以幫忙嗎?

感謝,

回答

0

您可以使用變量來跟蹤先前行的價值。

嘗試這種解決方案:

SELECT  @vw:=CONCAT(@vw, '|', a.viewing) AS viewing 
      a.views, 
      CASE @total 
       WHEN 0 THEN @total:=b.viewsum - a.views 
       ELSE  @total:[email protected] - 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 
+0

謝謝!有效。 – Ben 2012-07-31 21:27:49