【问题标题】:Use COUNT, but only for a specific value使用 COUNT,但仅用于特定值
【发布时间】:2025-12-30 09:10:06
【问题描述】:

我有一个保存了比赛的表格,我想生成一个表格来显示当前的排名。到目前为止,我的代码如下所示:

SELECT DISTINCT cname, COUNT(cname) AS games, **COUNT(points WHERE points=3) AS wins**, 1, 0, SUM(goalsscored)-SUM(goalsconceded) AS goaldiff, SUM(po$
FROM pmatch
GROUP BY cname
ORDER BY point DESC, goaldiff DESC

我保存了每场比赛的球队在该比赛中获得的分数。所以我只需要计算每场比赛,一支球队获得 3 分的胜场数,1 分的平局数和 0 分的输球数。

但是,COUNT 命令无法正常工作。在粗体部分,你看到我想计算每场比赛球队得到 3 分的情况。我该如何正确地做到这一点?

提前致谢!!

【问题讨论】:

    标签: php html sql sql-server


    【解决方案1】:

    使用CASE 表达式。

    查询

    SELECT cname, 
    COUNT(cname) AS games, 
    SUM(CASE points WHEN 3 THEN 1 ELSE 0 END) AS wins,
    SUM(CASE points WHEN 1 THEN 1 ELSE 0 END) AS draws,
    SUM(CASE points WHEN 0 THEN 1 ELSE 0 END) AS loses,
    SUM(goalsscored)-SUM(goalsconceded) AS goaldiff
    FROM pmatch
    GROUP BY cname
    ORDER BY 3 DESC, 6 DESC;
    

    【讨论】:

      【解决方案2】:

      只需使用CASE:

      SELECT cname, COUNT(cname) AS games, COUNT(case when points=3 then 1 end) AS wins, 1, 0, SUM(goalsscored)-SUM(goalsconceded) AS goaldiff
      FROM pmatch
      GROUP BY cname
      ORDER BY wins DESC,  -- probably
           goaldiff DESC
      

      【讨论】:

      • Distinct 在那个查询中没用
      • 谢谢!!我用你写的 COUNT,它工作得很好