有这种类型的数据:
id date user_id result
1 2015-05-04 1 win
2 2015-05-06 1 loss
3 2015-05-09 2 loss
4 2015-05-10 2 win
5 2015-05-16 1 win
我需要得到大多数 wins 按排序 4 用户排名。但我还需要对这些 4 的顶尖成功者获得损失的数量。所以当我查询此特定的组会和这:
user wins losses
1 2 1
2 1 1
我知道怎么去只是一起 user_id,wins 使用:
SELECT user_id, COUNT(id) AS wins FROM table WHERE result = 'win' GROUP BY user_id ORDER BY COUNT(id) DESC LIMIT 4
但我怎也会损失对使用相同的查询这些顶尖 4 球员吗?我知道它的可能,但只是一点线索也没有如何执行它!有什么想法?
解决方法 1:
你想要条件聚合:
SELECT user_id, sum(result = 'win') AS wins, sum(result = 'loss') as losses
FROM table
GROUP BY user_id
ORDER BY wins DESC
LIMIT 4;