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的行的列乘法总和的主要内容,如果未能解决你的问题,请参考以下文章