在查询中计算正确的总数?

时间:2013-09-10 13:10:00

标签: mysql sql innodb

我有一张这样的表

| customer_id | item_id | price | amount |

我想检索每个客户在一次查询中花费的金额。

我试过了:

SELECT SUM(price * amount) AS total FROM table GROUP BY customer_id

但这会为total吐出天文数字高的值。它不可能是正确的。

我也试过

SELECT @total := @total + (price * amount) AS total FROM table
CROSS JOIN (SELECT @total := 0) CONST
GROUP BY customer_id

但是这并不是从每个客户的0开始,所以以前的总数会叠加......

如何正确检索我想要的数据?

4 个答案:

答案 0 :(得分:2)

您的初始查询是正确的:

SELECT SUM(price * amount) AS total
FROM table
GROUP BY customer_id;

(虽然我会在customer_id子句中包含SELECT。)

如果你有“天文数字很高的值”那么问题就在于你的数据。很可能,问题是每一行的“价格”确实是“全部”。

答案 1 :(得分:1)

您必须在select子句中添加客户ID。

答案 2 :(得分:0)

我认为您的查询应该是正确的。我在服务器上尝试了以下内容:

create table test (customer_id int, item_id int, price money, amount int)

insert test values (1,1,10,2)
insert test values (1,2,12,4)

insert test values (2,1,10,2)
insert test values (2,3,5,1)
insert test values (2,4,0.5,21)

SELECT customer_id,sum(price*amount) FROM test
GROUP BY customer_id

答案 3 :(得分:0)

我认为你需要这样的东西:

select customer_id,sum(price * amount) from table group by customer_id