加入SQL查询求和

时间:2015-11-11 04:43:42

标签: sql

我有两张桌子

TABLE_1:

╔══════╦══════════╦═════════╗
║ Name ║   Date   ║ Revenue ║
╠══════╬══════════╬═════════╣
║  A   ║ 1/1/2001 ║   20    ║
║  A   ║ 1/2/2001 ║   20    ║
║  B   ║ 1/1/2001 ║   40    ║
╚══════╩══════════╩═════════╝

TABLE_2:

╔══════╦══════╗
║ Name ║ Task ║
╠══════╬══════╣
║  A   ║ Call ║
║  A   ║ Foo  ║
║  B   ║ Bar  ║
╚══════╩══════╝

所以我做了一个加入

SELECT sum(Revenue), t2.Name, T2.Task
FROM Table_1 as t1 JOIN Table_2 as t2 ON t1.Name = t2.Name
GROUP BY t2.Name

联接的结果表如下所示:

Result
Name    Sum
A       80
B       40

问题是我希望A的总和结果为40.我应该如何修改我的查询?

3 个答案:

答案 0 :(得分:2)

使用此查询:

self::

由于您没有使用SELECT Name, SUM(Revenue) FROM Table_1 GROUP BY Name 列,我认为加入Table_1Table_2无关。

答案 1 :(得分:2)

问题的根源是连接没有按照您的预期执行。通过在'name'上的两个表之间进行连接,您将创建重复项。删除查询中的group by子句,您将看到我的意思。

如前一个答案所述,联接(在这种情况下)是多余的。我建议看看比这更接近的事情。如何构建数据以便不会发生这种重复数据?

如果没有更多数据,我无法为您提供更多指导,但希望我的评论会指出您正确的方向,并且您将学习使用离散键值的宝贵经验。

答案 2 :(得分:0)

你必须在加入表之前计算总和,如:

    select t1.Name, t1.sum, t2.task from
    (
      SELECT Name, sum(Revenue) as sum FROM Table_1 group by Name
    ) as t1 
   JOIN 
   Table_2 as t2 ON t1.Name = t2.Name