【问题标题】:Sum of fields from separate tables不同表中的字段总和
【发布时间】:2015-02-04 20:03:23
【问题描述】:

我有两张桌子。表 A 有 5 条记录,表 B 有 4 条记录。我的 SQL 如下所示:

SELECT 
    sum(labor), sum(setup), sum(actual)
FROM 
    TABLE A 
LEFT JOIN 
   TABLE B ON [TABLE A].OP = [TABLE B].OP

表 A

op | labor | setup
---+--   --+---
10 |  0.05 |  0
20 |  0.3  |  0.2
30 |  0.05 |  0
40 |  0.0  |  0
50 |  0.0  |  0

表 B

op | actual
---+----
10 |  0.05 
20 |  3.083
20 |  0.283
20 |  0.3

我需要在一行中完成人工、设置和实际工作的总和。所以劳动力 = 0.4,设置 = 0.2,实际 = 3.716。我遇到的问题是我得到了劳动力 = 1,设置 = 0.6,实际是 3.716,因为表 B 有 3 条记录,操作为 20。

我也尝试过使用 over(partition by op),但我得到了相同的结果。有人可以帮忙吗,我一直盯着查询几个小时,开始失去理智。

谢谢

【问题讨论】:

    标签: sql join sum


    【解决方案1】:

    您需要在 join 之前的第二个表上进行聚合:

    SELECT sum(labor), sum(setup), sum(actual)
    FROM TABLE A LEFT JOIN
         (SELECT OP, SUM(actual) as actual
          FROM TABLE B
          GROUP BY OP
         ) b
         ON [TABLE A].OP = b.OP;
    

    否则,您的行在join 之后会相乘,并且第一个表上的聚合不起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      • 1970-01-01
      • 2012-01-04
      • 2022-07-27
      • 2020-10-14
      • 1970-01-01
      相关资源
      最近更新 更多