【问题标题】:Want to GROUP BY a combined set of all values contained in two similar columns (not by two separate columns)想要 GROUP BY 包含在两个相似列中的所有值的组合集(而不是两个单独的列)
【发布时间】:2019-08-28 23:35:22
【问题描述】:

我有一个包含游戏分数的表格(“分数”)。该表包含 Team1 的列和 Team2(Team1 的对手)的列以及他们在比赛中的得分。这是一个例子:

------------------------------------------
| id | Team1  | Score1 | Team2  | Score2 |
------------------------------------------
|  1 | Reds   |   1    | Blues  |   6    |
|  2 | Blues  |   5    | Greens |   2    |
|  3 | Greens |   3    | Whites |   4    |
|  4 | Whites |   0    | Greens |   7    |
------------------------------------------

我想要的是一个表格(“GameCounts”),其中计算每支球队参加了多少场比赛,无论球队是 Team1 还是 Team2。这是我想要的示例:

-----------------------
|  Team  |  GameCount |
-----------------------
|  Reds  |      1     |
|  Blues |      2     |
| Greens |      3     |
| Whites |      2     |
-----------------------

解决这个问题后,我想制定另一个表格(“ScoreSum”),每个团队的列表及其得分总和:

-----------------------
|  Team  |  ScoreSum  |
-----------------------
|  Reds  |      1     |
-----------------------
|  Blues |     11     |
-----------------------
| Greens |     12     |
-----------------------
| Whites |      4     |
-----------------------

我尝试过的每个 MySQL 查询都没有接近。谢谢!

【问题讨论】:

  • 好吧,让我们看看你迄今为止的最佳尝试。见meta.stackoverflow.com/questions/333952/…
  • 是的。给男人一条鱼,等等。
  • 嗯,是的,虽然在许多尝试中我确实尝试了同一个表的两个匹配项的并集,并且最近还遇到了对派生表执行“as”的需要,但没有一个我的尝试正确解析。我会对我的 SQL 经验进行排名,以便了解但仍处于初级阶段。我仍在学习。不过,感谢您的评论

标签: mysql


【解决方案1】:

您可以在一个查询中完成所有操作,方法是制作一个包含球队和分数的派生表,然后将每个球队名称及其分数的出现次数相加:

SELECT Team, COUNT(*) AS GameCount, SUM(Score) AS ScoreSum
FROM (SELECT Team1 AS Team,
             Score1 AS Score
      FROM Scores
      UNION ALL
      SELECT Team2 AS Team,
             Score2 AS Score
      FROM Scores) S
GROUP BY Team

输出:

Team    GameCount   ScoreSum
Blues   2           11
Greens  3           12
Reds    1           1
Whites  2           4

Demo on dbfiddle

【讨论】:

  • 有效!反应迅速,非常感谢。我没有足够的声誉来投票赞成您的回复,但这正是我所需要的。
  • @RickTucker 不用担心。我很高兴能帮上忙。虽然您不能投票,但如果它解决了您的问题,您仍然可以接受答案(上/下投票箭头下的复选标记)。见stackoverflow.com/help/someone-answers
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-02
  • 2013-01-27
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
  • 1970-01-01
相关资源
最近更新 更多