2017-03-31 88 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

谢谢!它解决了我的问题并教我有用的东西。 –

相关问题