【问题标题】:SQL - Sum of a subquery: What are I am doing wrong?SQL - 子查询的总和:我做错了什么?
【发布时间】:2015-09-19 14:05:10
【问题描述】:

我对 SQL 很陌生,几天前就开始了我的第一步。但要知道我已经走到了死角。如果你愿意帮助我,那就太好了。

这些是必需的表格:

表格:Customer_Bonus
Bonus_ID、Customer_ID、金额
301、100215、100
302、100924、50
...

表:Customer_Mapping
Customer_ID、Name、Adress_ID
100215, 美国能源部工业公司, 8203351
100924, 艾尔卡彭服务有限公司, 849215
...

表格:Customer_Bonus_to_Invoice
Invoice_IDNR、Bonus_ID、金额
216523、301、10
...
244854、302、10
...
284111、301、10
...
299569、302、20
...
316017、302、10
...

我要回答的问题:如何获得所有已用奖金的总和?

这就是我想要的
Customer_ID、姓名、Bonus_ID、奖金总额、已用奖金总额
100215, 美国能源部工业公司, 301, 100, 20
100924, Al Capone Service Ltd., 302, 50, 40
...

这是我一直在尝试的

SELECT 
Customer_Mapping.Customer_ID
Customer_Mapping.Name,
Customer_Bonus.Bonus_ID,
Customer_Bonus.Amount,
(SELECT 
SUM(Customer_Bonus_to_Invoice.Amount) 
FROM Customer_Bonus_to_Invoice 
WHERE Customer_Bonus_to_Invoice.Bonus_ID = Customer_Bonus.Bonus_ID) 
AS 'sum of used bonus'

FROM 
Customer_Bonus
Customer_Mapping
Customer_Bonus_to_Invoice 

WHERE
Customer_Bonus.Customer_ID = Customer_Mapping.Customer_ID

这是 JOIN 的工作吗?

【问题讨论】:

  • "Sum of a subquery: What are I am doing wrong?" 您的查询在哪里?
  • 对不起,我忘记粘贴了。 :(

标签: sql sum subquery


【解决方案1】:

给你:

SELECT CM.CUSTOMER_ID,
    CM.NAME ,
    CB.Bonus_ID,
    cb.Amount,
    SUM(cbi.Amount)
FROM CUSTOMER_MAPPING CM
INNER JOIN CUSTOMER_BONUS CB
ON CM.CUSTOMER_ID=CB.CUSTOMER_ID
INNER JOIN CUSTOMER_BONUS_TO_INVOICE CBI
ON cbi.Bonus_ID=cb.Bonus_ID
GROUP BY CM.CUSTOMER_ID,
    CM.NAME,
    CB.BONUS_ID,
    cb.Amount;

【讨论】:

  • 感谢您的快速回答。 :) 我需要几分钟来理解这意味着什么。
  • @tho.mass 如果您是新手,我建议您使用简单但非常好的教程,例如w3schools
  • 它工作正常。我应该说什么?非常感谢你。 :) 这很有帮助,可以帮助我理解和学习。
【解决方案2】:

试试这个:

SELECT t1.Customer_ID,t1.Name,sum(t2.Amount) as    total_sum_of_bonus,sum(t3.Amount) as sum_of_used_bonus FROM Customer_Mapping as t1
LEFT JOIN Customer_Bonus as t2 on t1.Customer_ID=t2.Customer_ID
LEFT JOIN Customer_Bonus_to_Invoice as t3 on t2.Bonus_ID=t3.Bonus_ID
GROUP BY t1.Customer_ID,t1.Name,t3.Bonus_ID

【讨论】:

  • 我也要感谢你。在这一点上,我不知道这两种解决方案以及内连接和左连接之间的区别。我有很多要学习的。 ;)
猜你喜欢
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
  • 2020-02-11
相关资源
最近更新 更多