Я думаю, что мне не хватает простого шага здесь, но я не могу понять это. Я читал другие темы, и они говорят о группировке, но я, похоже, не собираюсь все вместе.Расчет суммы количества * цена за единицу в mysql
У меня есть простая таблица, в которой хранятся транзакции с ценными бумагами. В каждой строке есть количество и цена. Я хочу получить сумму количества и сумму каждой цены * каждой величины.
Вот мой вопрос. Если я удалю группировку, я получаю 1 результат, который умножается на количество строк в таблице. Если я добавлю группировку, я получаю правильный результат несколько раз. Я что-то упустил? Мне просто хочется запустить запрос, чтобы получить результаты 20k, когда все они содержат одни и те же данные, будет бессмысленным.
SELECT (SUM(i.quantity) - IFNULL(SUM(s.quantity), 0)) AS quantity,
SUM(i.unitprice * i.quantity) AS totalprice
FROM 02_01_transactions t
LEFT JOIN 02_01_transactions i
ON i.type = 1
AND i.active = 1
LEFT JOIN 02_01_transactions s
ON s.type = 2
AND s.active =1
GROUP BY t.id
Ваш присоединяется, безусловно, не так. Вы пытаетесь сделать какой-то фильтр и применить отрицательный знак к транзакциям типа 2? Я предполагаю, что 20k - это намного больше транзакций, чем вы ожидали. – shawnt00
Почему вы присоединяетесь к одному и тому же столу? Разве не нужно выбирать с группой By, чтобы дать вам свой результат? Основываясь на запрошенном вами сообщении, я не вижу необходимости в этих объединениях, и кажется, что они являются причиной того, что вы получаете правильный результат несколько раз. –