Mysql - 将两列相乘并减去差值
Mysql - Multiplicate two cols and subtract the difference
我有一个像这样的 table 数据库结构。
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_size 乘以 prod_amount 并得到 IN 和 UT 帖子之间的区别按 product_id 分组。
我有一个开始,但它不正确。
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
因此 table 中的预期结果应该是:
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
我有一个像这样的 table 数据库结构。 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_size 乘以 prod_amount 并得到 IN 和 UT 帖子之间的区别按 product_id 分组。 我有一个开始,但它不正确。
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
因此 table 中的预期结果应该是:
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