【问题标题】:Count records with criteria使用条件计数记录
【发布时间】:2014-07-12 11:01:40
【问题描述】:

我使用以下查询来计算列表中每个锦标赛的参赛选手总数。

    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

到目前为止一切顺利,并且正确显示了每场锦标赛的参赛选手总数。 问题是,由于球员是男性和女性,我还想在两个不同的列中计算每场比赛的男性和女性选手的总数。

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

有什么想法吗?

提前致谢!

【问题讨论】:

  • 请用您正在使用的 RDBMS 标记您的问题:MySQL、SQL-Server、Oracle 等。

标签: mysql count subquery rdbms


【解决方案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

女性也类似。

【讨论】:

  • 感谢您的回答,成功了!实际上,我使用的是相同的查询,但不是 SUM,而是我为男性和女性输入了 COUNT ..:-(
猜你喜欢
  • 2011-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 2020-06-18
相关资源
最近更新 更多