【问题标题】:Count number of wins grouped by football team计算按足球队分组的获胜次数
【发布时间】:2019-07-10 15:56:39
【问题描述】:

我有一个表,matches,我在其中存储两支球队之间的足球比赛,localvisitor。然后,我还将本地团队是否赢了,localwin 存储为 tinyint(1) - 如果他们赢了,则为 1,如果他们输了,则为 0。我的桌子是这样的

local           visitor       localwin
Manchester      Barcelona         1
Manchester      Real Madrid       0
Real Madrid     Bayern            0
Bayern          Barcelona         1

我如何计算不同球队获胜的次数?

我知道我可能需要一个 COUNT 和一个 GROUP BY,但我不知道该怎么做。

【问题讨论】:

    标签: mysql sql select count


    【解决方案1】:

    您可以使用case 表达式来产生获胜者,然后按它分组并计算出现次数:

    SELECT   CASE localwin WHEN 1 THEN local ELSE visitor END, COUNT(*)
    FROM     matches
    GROUP BY CASE localwin WHEN 1 THEN local ELSE visitor END
    

    注意:
    此查询假设如果本地团队没有获胜,则访客获胜,即没有平局。如果绘图是一个选项,case 表达式可能需要一些调整。

    【讨论】:

    • 在我的比赛中没有平局:P。这解决了问题,感谢您快速正确的回答。我会尽快接受。
    【解决方案2】:

    这个:

    select t.team, count(m.localwin) wins
    from (
      select local team from matches
      union
      select visitor team from matches
    ) t left join matches m
    on t.team = (case m.localwin when 1 then m.local else m.visitor end) 
    group by t.team
    

    还将包括拥有0 获胜的团队。
    demo

    【讨论】:

      猜你喜欢
      • 2017-10-09
      • 2020-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 2020-08-22
      相关资源
      最近更新 更多