【问题标题】:Merge results of two SUM DISTINCT queries in MYSQL在 MYSQL 中合并两个 SUM DISTINCT 查询的结果
【发布时间】:2017-10-01 20:53:05
【问题描述】:

我有以下两个单独的语句查询同一个表,在每种情况下,一个 select distinct 应用于一列,然后对另一列求和。

 SELECT 
    HomeTeam, SUM(FTHG)
 FROM 
    (SELECT DISTINCT HomeTeam, FTHG FROM Football_Stats.E0_1617) AS alias_name
 GROUP BY
    HomeTeam


 SELECT 
    AwayTeam, SUM(FTAG)
 FROM 
    (SELECT DISTINCT AwayTeam, FTAG FROM Football_Stats.E0_1617) AS alias_name
 GROUP BY
    AwayTeam

选择不同的结果(但不是总和)将是相同的,是否可以将单个查询的组合结果返回到如下所示:

团队总和(FTHG)总和(FTAG)

这需要连接两个临时表吗?

抱歉,我没有发布示例表,我在格式上遇到了困难。

【问题讨论】:

  • 请添加场景和样本数据。这对解决您的问题非常有帮助。
  • 从选择的不同结果中求和数字几乎总是不正确的。 Id=1 Team=x goals=3, id=2 team=x goals=3 正确的目标总和 = 6,但选择不同团队的总和,目标 = 3。

标签: mysql


【解决方案1】:

一种选择是首先使用 UNION ALL 添加两个查询结果(但为 FTHG 和 FTAG 创建不同的列),然后再次组合按团队分组的行...

SELECT Team,SUM(FTHGSum),SUM(FTAGSum)
FROM 
    ((SELECT HomeTeam AS Team,SUM(FTHG) AS FTHGSum,0 AS FTAGSum FROM (SELECT DISTINCT HomeTeam,FTHG FROM ZTesting) T1 GROUP BY HomeTeam)
    UNION ALL
    (SELECT AwayTeam AS Team,0 AS FTHGSum,SUM(FTAG) AS FTAGSum FROM (SELECT DISTINCT AwayTeam,FTAG FROM ZTesting) T2 GROUP BY AwayTeam)) AS T
GROUP BY Team

注意:很抱歉问这个问题,但是...您知道将DISTINCT 与多个列一起使用会区分列组合吗?这对我来说似乎很奇怪,在您的查询中,您获得的目标总和并不是每支球队的所有比赛(您错过了球队得分相同的比赛)。不过当然,我只是猜测,我不知道你的具体情况……

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 2021-10-16
    • 2011-04-05
    • 1970-01-01
    相关资源
    最近更新 更多