2017-03-31 94 views
0

我有表存儲用戶在網站上做出的每一個投注。根據我的問題,只有2個重要的列:爲每個用戶選擇有效性

+--------+--------+ 
| userid | status | 
+--------+--------+ 
|  2 |  0 | 
|  2 |  1 | 
|  2 |  1 | 
|  6 |  1 | 
|  6 |  1 | 
+--------+--------+ 

我想計算爲每個用戶贏得賭注的百分比。 0表示丟失。 1意味着贏了。

因此,顯然百分比將贏得投注/所有投注。

我試圖通過下面的查詢來做到這一點,但它不像它應該那樣工作。

SELECT userid,(
(select count(id) as count_won from bets where status=1) 
/
(select count(id) as count_all from bets where status!=-1)) * 100 as percent FROM bets group by userid; 

我得到的結果:

+--------+---------+ 
| userid | percent | 
+--------+---------+ 
|  2 | 80.0000 | 
|  6 | 80.0000 | 
+--------+---------+ 

它計算所有的賭注百分比。我如何爲每個用戶進行計算?

我知道我可以用userid添加WHERE子句,但我不想這樣做,因爲計算後我想簡單地按百分比排序結果。

有人可以幫我一點嗎?

回答

1

像這樣的事情可能對你有所幫助,

SELECT USERID 
    , (COALESCE(SUM(CASE WHEN STATUS = 1 THEN 1 END), 0)/COUNT(*)) * 100 STATUS1_PER 
    , (COALESCE(SUM(CASE WHEN STATUS = 0 THEN 1 END), 0)/COUNT(*)) * 100 STATUS0_PER 
FROM 
MY_TABLE1 
GROUP BY USERID; 
+0

謝謝!它解決了我的問題並教我有用的東西。 –