我有用于存储用户在网站上进行的每次下注的表格。根据我的问题,只有两个重要的栏目:
+--------+--------+
| 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子句,但我不想这样做,因为在计算之后我想简单地按百分比排序结果。
有人能帮我一点吗?
答案 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;