我有一张这样的表
| 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
开始,所以以前的总数会叠加......
如何正确检索我想要的数据?
答案 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