我使用以下查询来计算列表中每个锦标赛的总玩家条目。
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
到目前为止一直都很好并正确显示每场比赛的总球员参赛人数。 问题是,由于球员是男性和女性,我想在两个不同的栏目中计算每场锦标赛中男子和女子球员的总数。
我尝试使用子查询,但是我得到一个错误,即子查询返回多行。
有什么想法吗?
提前致谢!
答案 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
和女性相似。