MySQL中具有相似ID的行的乘法和

时间:2011-01-17 10:17:17

标签: mysql select sum

我在名为“购买”的表格中有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]

2 个答案:

答案 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是最新的吗?

alt text

第二个也很好用:

alt text