【问题标题】:Count number of rows and number of value matches计算行数和值匹配数
【发布时间】:2012-08-04 21:54:05
【问题描述】:
SELECT COUNT(m.winner = p.userName) AS wins, YEAR(m.datePlayed) AS year, DATE_FORMAT(m.datePlayed, '%M') AS month, COUNT(*) as games FROM allMatches AS m LEFT JOIN playerUsers AS p ON m.season = p.season AND (m.player1 = p.userName OR m.player2 = p.userName) WHERE p.realName = '$realName' AND m.winner != '' AND m.canceled != '1' GROUP BY YEAR(m.datePlayed), MONTH(m.datePlayed)";

我们要加入 2 个表:allMatches 和 playerUsers。 PlayerUser 的用户名与给定赛季的 allMatches 表中的 player1 或 player2(也可能与获胜者)匹配。

我想计算玩过的游戏数(他们参加的任何比赛)和他们赢得的游戏数(他们在 playerUsers 上的用户名与 allMatches 上的获胜者匹配)。上面的 SQL 语句以相同的数字返回胜利和游戏。有没有办法在同一个 SQL 语句中统计胜局数和局数?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    使用SUM而不是COUNT来计算获胜次数:

    SELECT SUM(m.winner = p.userName) AS wins, ...
    

    之所以有效,是因为布尔表达式的计算结果为 0 和 1,因此 SUM 会为您提供表达式为真的总行数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-26
      • 2017-06-24
      • 1970-01-01
      • 2018-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多