如何结合multiple COUNT()和GROUP BY实现MySQL查询
所以我有这类数据:如何结合multiple COUNT()和GROUP BY实现MySQL查询,mysql,sql,select,count,Mysql,Sql,Select,Count,所以我有这类数据: 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
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
我需要按大多数赢家对前4名用户进行排序。但我还需要得到这4位头号赢家的损失数字。因此,当我查询这个特定集合时,我会得到:
user wins losses
1 2 1
2 1 1
我知道如何通过使用以下工具与用户id一起获得胜利:
SELECT user_id, COUNT(id) AS wins FROM table WHERE result = 'win' GROUP BY user_id ORDER BY COUNT(id) DESC LIMIT 4
但是,如果使用相同的查询,我将如何获得前4名球员的损失?我知道这是可能的,但只是不知道如何执行它!有什么想法吗?您想要条件聚合:
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;
您需要条件聚合:
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;
您需要条件聚合:
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;
您需要条件聚合:
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;
我会这样做:
SELECT user_id,
SUM(CASE WHEN result='win' THEN 1 ELSE 0 END) AS wins,
SUM(CASE WHEN result='loss' THEN 1 ELSE 0 END) AS losses
FROM table1
GROUP BY user_id
ORDER BY wins DESC
LIMIT 4
小提琴在这里:我会这样做:
SELECT user_id,
SUM(CASE WHEN result='win' THEN 1 ELSE 0 END) AS wins,
SUM(CASE WHEN result='loss' THEN 1 ELSE 0 END) AS losses
FROM table1
GROUP BY user_id
ORDER BY wins DESC
LIMIT 4
小提琴在这里:我会这样做:
SELECT user_id,
SUM(CASE WHEN result='win' THEN 1 ELSE 0 END) AS wins,
SUM(CASE WHEN result='loss' THEN 1 ELSE 0 END) AS losses
FROM table1
GROUP BY user_id
ORDER BY wins DESC
LIMIT 4
小提琴在这里:我会这样做:
SELECT user_id,
SUM(CASE WHEN result='win' THEN 1 ELSE 0 END) AS wins,
SUM(CASE WHEN result='loss' THEN 1 ELSE 0 END) AS losses
FROM table1
GROUP BY user_id
ORDER BY wins DESC
LIMIT 4
小提琴在这里:啊,我看戈登已经回答了。请注意,并非所有数据库都支持他使用的条件聚合。但是再说一遍,限制也不是。啊,我看戈登已经回答了。请注意,并非所有数据库都支持他使用的条件聚合。但是再说一遍,限制也不是。啊,我看戈登已经回答了。请注意,并非所有数据库都支持他使用的条件聚合。但是再说一遍,限制也不是。啊,我看戈登已经回答了。请注意,并非所有数据库都支持他使用的条件聚合。但是,同样的,
LIMIT
。