【问题标题】:MYSQL QUERY sum from two tables来自两个表的 MYSQL QUERY 总和
【发布时间】:2011-11-06 14:30:55
【问题描述】:

嘿,我在下面的 Mysql 查询中遇到了一些问题,我如何从 team_stats 表而不是 driver_stats 表中计算 SUMS(计算点,查询中的第 5 和第 6 和)与现在 team_id = 3 的条件相同。我所需要的只是将这些计算从 driver_stats 表交换到 team_stats 表,我遇到的问题是,当我尝试这样做时,计算就像它一样高不是只为 where team_id = '3' 或任何数字做这些。

任何帮助将非常感谢。

SELECT       t.teamname,
             t.value,
             SUM(IF(qual_pos = '1', 1,0)) AS poles,
             SUM(IF(race_pos <= '3', 1,0)) AS podiums,
             SUM(IF(race_pos = '1', 1,0)) AS victories,
             SUM(overtakes) AS overtakes,
             SUM(CASE
               WHEN s.track_id = (SELECT MAX(track_id) FROM driver_stats) THEN
                 points
               ELSE
                 0
             End) AS lastracepoints,

             # CHANGE THIS SUM AND THE SUM ABOVE TO CALCULATE
             # the points column in the tale named TEAM_STATS
             # but with the same restrictions as now,
             # only where team_id = 3
             SUM(points) AS points 

FROM         driver_stats s
  LEFT JOIN  drivers d
  ON         d.drivers_id = s.drivers_id
  LEFT JOIN  teams t
  ON         d.team_id = t.team_id
WHERE        d.team_id = 3

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    在特殊情况下,MySQL 可以让您使用聚合(sum)而不定义 group by 子句,但这不是典型的,对您不起作用。

    Is it possible to use Aggregate function in a Select statment without using Group By clause?

    我没有通过 try 测试过这个:

    SELECT       t.teamname,
                 t.value,
                 SUM(IF(qual_pos = '1', 1,0)) AS poles,
                 SUM(IF(race_pos <= '3', 1,0)) AS podiums,
                 SUM(IF(race_pos = '1', 1,0)) AS victories,
                 SUM(overtakes) AS overtakes,
                 SUM(CASE
                   WHEN s.track_id = (SELECT MAX(track_id) FROM driver_stats) THEN
                     points
                   ELSE
                     0
                 End) AS lastracepoints,
                 SUM(points) AS points 
    
    FROM         drivers d
      INNER JOIN  driver_stats s
      ON         d.drivers_id = s.drivers_id
      AND         d.team_id = 3
      LEFT JOIN  teams t
      ON         d.team_id = t.team_id
    GROUP BY
        teamname,
        `value`
    

    【讨论】:

      猜你喜欢
      • 2015-06-25
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      • 1970-01-01
      • 2017-11-11
      • 1970-01-01
      • 2021-06-25
      • 1970-01-01
      相关资源
      最近更新 更多