使用条件计算记录

时间:2014-07-12 11:01:41

标签: 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_plist.tournament
    ORDER BY cnt DESC

到目前为止一直都很好并正确显示每场比赛的总球员参赛人数。 问题是,由于球员是男性和女性,我想在两个不同的栏目中计算每场锦标赛中男子和女子球员的总数。

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

有什么想法吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

如果您正在使用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

和女性相似。