尝试获取SQL查询以返回customerId等于给予customerId的列的总和

时间:2015-03-24 18:22:09

标签: java sql

我有sql查询,当给定客户ID时,应该预订获得支付金额列和一些成本列的总和。 但是当我执行它时,返回100表示​​total_cost sum,100表示​​amount_paid sum,但总成本之和应为1000

SELECT SUM(cost) AS 'total_cost', SUM(amount_paid) AS 'amount_paid' FROM booking WHERE ID = 'customerId' 

执行resultSet.getString("total_cost");时,它为amount_paid返回100相同,我也尝试过resultSet.getString(2);同样的问题。 我做错了什么?

预订表中的列: ID,cost,amount_paid,customer_id

将行插入预订表

1 100 100,
2 300 100,
3 500 100,
4 100 100,
5 0 100,

2 个答案:

答案 0 :(得分:0)

删除“WHERE id ='customerId'”。 :)

答案 1 :(得分:0)

  

我有sql查询,当给定客户ID时,应该预订获得支付金额列和一些成本列的总和。但是当我执行它时,返回100表示​​total_cost sum,100表示​​amount_paid sum,但总成本之和应为1000

所以预期答案是total_cost = 1000(其中所有值都已添加)和amount_paid = 100(或者该客户的相关值是什么)?

您的问题是,由于total_cost和amount_paid在查询中放在一起,因此它也会根据客户ID限制total_cost。我建议将它分成两个查询。或者,如果需要维护单个查询,则可以使用子查询来检索total_cost,而不受客户ID的限制。

SELECT 
   (SELECT SUM(cost) FROM booking) AS 'total_cost', 
   SUM(amount_paid) AS 'amount_paid' 
FROM booking 
WHERE ID = 'customerId'