的波動百分比我有這樣Mysql的CASE語句 - 尋找現場
id userid points points_change date
1 6 100 0 2014-10-1
2 6 90 -10 2014-10-11
3 6 20 -70 2014-10-15
4 5 50 0 2014-10-16
分表的點數。 分數變化是從最後一個插入點的點數變化
我如何找到給定日期範圍內波動最大點的用戶?
我試圖
SELECT `userid`, ABS(((SUM(`points_change`))/MAX(`points`))) AS f
FROM `mytable`
WHERE `date` BETWEEN $last AND $now
GROUP BY `userid`
HAVING f > 0
ORDER BY f DESC LIMIT 10
這裏的問題是,當SUM(points_change)是負的,你可以得到> 100%的波動,這是不應該的。
是否有辦法做某種case語句,以便SUM(points_change)爲負值時,它會將points_change的絕對值添加到Max點。例如,在上面的數據中,如果我要從2014-10-15開始選擇數據,它將爲用戶ID 6,更改-70/20 = 315%而不是-70 /(20+ 70)= 77%
請提供樣本數據和你所說的「最波動點」是什麼的描述。我可以想出幾種方法來衡量這個概念。 – 2014-11-23 14:40:46
@GordonLinoff我添加了一些數據 – user813801 2014-11-23 14:46:19