Mysql - умножить два столбца и вычесть разницу

0

У меня есть структура БД в одной таблице. 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

Таким образом, ожидаемый результат в этой таблице должен быть:

2 | 4
3 | 15

Спасибо в продвинутый для некоторой помощи здесь.

  • 0
    Когда я вижу группу, я ожидаю увидеть агрегатные функции. такой как сумма.
Теги:
grouping
multiplication

1 ответ

1
Лучший ответ

Вам не нужно объединяться с самим собой.

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 здесь

  • 0
    1000 благодаря тебе! Это добилось цели.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню