我在名为“购买”的表格中有3列:
id amount price
2 2 21
2 5 9
3 8 5
我想对具有相似ID的所有行进行分组,并将此数组作为结果:
array([0] => [id => 2, total => 87 (because 2*21+5*9=87)], [1] => [id => 3, total => 40 (because 8*5=40)])
为具有类似ID的行的余额(金额*价格)的总帐户。
我尝试过使用
SELECT id, SUM(p.price*p.amount) total FROM purchases p GROUP by p.id
但它不能很好地工作(即它没有实现我想要的,这就是我上面写的)。 关于如何在mysql中执行此操作的任何想法?
查询返回的示例:
id amount price
2 3 89
2 3 19
SELECT id, SUM(p.price*p.amount) total FROM purchases p GROUP by p.id
==> [id => 2, total => 183]
答案 0 :(得分:17)
SELECT
id,
SUM(amount*price) AS total
FROM mytable
GROUP BY id
数据:
| id | amount | price |
|----|--------|-------|
| 2 | 3 | 19 |
| 2 | 3 | 89 |
| 3 | 203 | 1 |
结果:
id total
2 324
3 203
答案 1 :(得分:0)
@sombe:我刚刚测试了你的查询,它运行得很好。你确定你的mysql是最新的吗?
第二个也很好用: