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

Posted

技术标签:

【中文标题】MySQL中具有相似ID的行的列乘法总和【英文标题】:Sum of multiplication of columns for rows with similar IDs in MySQL 【发布时间】:2011-06-10 08:49:00 【问题描述】:

我在名为“purchases”的表中有 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 的行的 SUM(amount*price) 的总帐户

我试过了

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]

【问题讨论】:

它实际上在做什么?你想让它做什么?它们是每个问题应该有的两个重要的东西。 “效果不好”这句话不是一个好的问题报告。 我已经给出了一个例子,请阅读这个例子。 它返回什么?您的确切数据是什么? 您确定要在同一个数据库上执行两个查询吗? 【参考方案1】:
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

【讨论】:

这正是我所说的对我不起作用。复制粘贴还没有解决。 这与他写的查询没有什么不同。这对他有什么帮助? 它至少可以在我的 MySQL 测试服务器上运行,并且完全符合您的期望。【参考方案2】:

@sombe:我刚刚测试了您的查询,它运行良好。你确定你的mysql是最新的吗?

第二个也很好用:

【讨论】:

是 (5)。我认为查询也很好,但例如 3*89+3*19 它返回 183(我不知道它是如何到达那里的)。 我刚刚尝试了应该给出错误的数据,但它在这里工作正常。您应该尝试更新您的 mysql,因为您很可能正在运行一个非常旧的版本。

以上是关于MySQL中具有相似ID的行的列乘法总和的主要内容,如果未能解决你的问题,请参考以下文章

计算R中具有相似值的行的平均值

通过合并相似的列来操作重复的行[重复]

通过匹配相似的行来解构 R 中的列?

QTableView 获取具有相似列值/数据的行列表

如何排除具有相似列的行?

从表中选择不同的记录并执行重复行的列总和(托盘、总和)。并显示重复的行一次[关闭]