如何实现 MySQL 查询结合多个的 count () 和 GROUP BY

有这种类型的数据:

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值