为每个用户选择有效性

时间:2017-03-31 20:11:31

标签: mysql

我有用于存储用户在网站上进行的每次下注的表格。根据我的问题,只有两个重要的栏目:

+--------+--------+
| 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 个答案:

答案 0 :(得分: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;