代码之家  ›  专栏  ›  技术社区  ›  Thorin

如何使用最新的MYSQL版本和左连接两个聚合函数获得分组

  •  0
  • Thorin  · 技术社区  · 4 年前

    enter image description here 我有两个表,如上图所示,第三个表应该被输出。

    我试过这样做,但无法得到结果,我只能得到其中一列,但不能同时得到两列。

    这就是我所用的:

    select Budget.Category, sum(Budget.Estimated_Cost) as Estimated_Cost,       
            sum(Actuals.Actual_Cost) as Actual_Cost 
    from Budget
        LEFT OUTER JOIN Actuals ON Budget.task = Actuals.Task
    GROUP BY Budget.Category;
    

    select b.Category, sum(b.Estimated_Cost) AS Estimated_Cost 
    FROM Budget b
        LEFT JOIN (SELECT DISTINCT a.Task 
                    FROM Actuals a) x 
            ON x.Task = b.task
    GROUP BY b.Category**
    
    0 回复  |  直到 4 年前
        1
  •  1
  •   forpas    4 年前

    第一批 Budget Estimated_Cost 每人 Category 然后加入 Actuals 再进行一次聚合,得到 Actual_Cost 它们相互链接 类别 :

    SELECT b.Category, 
          b.Estimated_Cost,
          SUM(a.Actual_Cost) AS Actual_Cost 
    FROM (
      SELECT Category, SUM(Estimated_Cost) Estimated_Cost,
             GROUP_CONCAT(Task) Tasks
      FROM Budget
      GROUP BY Category
    ) b LEFT JOIN Actuals a
    ON FIND_IN_SET(a.Task, b.Tasks)
    GROUP BY b.Category, b.Estimated_Cost