我有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,
答案 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'