Mysql - 将两列相乘并减去差值

标签 mysql grouping multiplication

我在一个表中有一个像这样的数据库结构。 Id、product_id、in_out、prod_size、prod_amount 和一些示例数据:

1 | 2 | IN | 4 | 2
2 | 2 | UT | 4 | 1
3 | 3 | IN | 3 | 5

现在我想将 prod_sizeprod_amount 相乘,并获得按 product_id 分组的 IN 和 UT 帖子之间的差异。 我有一个开始,但它不正确。

SELECT sk1.product_id 'product_id',
(sk2.prod_size*sk2.prod_amount)-(sk1.prod_size*sk1.prod_amount) as availability
FROM tbl sk1
LEFT JOIN tbl sk2 ON sk1.product_id=sk2.product_id
WHERE sk1.in_out='UT' AND sk2.in_out = 'IN'
GROUP BY sk1.product_id

因此该表中的预期结果应该是:

2 | 4
3 | 15

最佳答案

您不需要加入自身。

select   product_id,
         sum((prod_size * prod_amount) * if(in_out = 'IN', 1, -1)) total
from     tbl
group by product_id
product_id | total
---------: | ----:
         2 |     4
         3 |    15

dbfiddle here

关于Mysql - 将两列相乘并减去差值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48975102/

相关文章:

mysql - 计划构建包含自定义设计的博客文章/评论的 xml 文件,以便通过 Clojure 导入 WordPress

php - 用户输入数据库

c - 乘以int64_t数组的最快方法?

ajax - 将多个 Action 组合在一起的最佳方法(作为一个事件)

javascript - JavaScript 中的乘法表 - 2 个表

python - 多个 DF 列的求和

mysql - 在 GNU/Linux 上安装共享的 mysql 服务器时出错

javascript - 将一张表的id与另一张表的user_id匹配以获取mysql中的记录

mysql - 跨列按 id 分组

matlab - 如何对包含分组数据的矩阵进行行排序