Mysql 使用标准对记录进行计数

Mysql 使用标准对记录进行计数,mysql,count,subquery,rdbms,Mysql,Count,Subquery,Rdbms,我使用下面的查询来计算列表中每个锦标赛的总玩家条目数 SELECT fab_tournaments.tournament, count(fab_plist.id) AS cnt FROM fab_plist INNER JOIN fab_tournaments ON fab_tournaments.id = fab_plist.tournament WHERE fab_tournaments.activation = 'No' GROUP BY fab_p

我使用下面的查询来计算列表中每个锦标赛的总玩家条目数

    SELECT fab_tournaments.tournament, count(fab_plist.id) AS cnt
    FROM fab_plist
    INNER JOIN fab_tournaments ON fab_tournaments.id = fab_plist.tournament
    WHERE fab_tournaments.activation = 'No'
    GROUP BY fab_plist.tournament
    ORDER BY cnt DESC
到目前为止一切都很好,并正确显示了每场比赛的球员总参赛人数。 问题是,由于球员是男性和女性,我想在两个不同的栏中计算每场比赛的男性和女性球员总数

我尝试使用子查询,但得到一个错误,子查询返回多行

有什么想法吗


提前谢谢

如果您使用的是MySQL,这将起作用

SELECT fab_plist.tournament,
       SUM(fab_plist.gender = 'male') AS men,
       SUM(fab_plist.gender = 'female') AS women,
       COUNT(*) AS total
FROM fab_plist
INNER JOIN fab_tournaments ON fab_tournament.id = fab_plist.tournament
WHERE fab_tournament.activation = 'No'
GROUP BY fab_plist.tournament
如果您正在使用其他数据库,则可能必须更改为

SUM(CASE WHEN fab_plist.gender = 'male' THEN 1 END) AS men

女性也一样。

请用您正在使用的RDBMS标记您的问题:MySQL、SQL Server、Oracle等。感谢您的回答,它成功了!事实上,我使用的是同一个查询,但我没有计算总和,而是对男性和女性进行计数-(