[Посоветуйте другой заголовок можно только приветствовать]
Простите, я очень новичок в запросе синтаксиса, и я изо всех сил пытаюсь найти ответ на следующий вопрос.
У меня есть таблица данных, детализирующая сделки с акциями 'tb_trades', положительные объемы - это покупки, отрицательные - продажи:
ID | Symbol | Price | Volume | Charges
---+--------+-------+--------+--------
1 | BP | 300 | +100 | 15
2 | BP | 310 | +100 | 15
3 | TOT | 250 | +50 | 20
4 | BP | 340 | -20 | 10
Мне нужен запрос, который возвращает для каждого символа средневзвешенную цену покупки, баланс объема и сумма ВСЕХ начислений, поэтому для вышеуказанного:
Symbol | Avg Price | Volume | Total Charges
-------+-----------+--------+--------------
BP | 305 | +180 | 40
TOT | 250 | +50 | 20
Я получил средневзвешенную цену с «условием покупки», как показано ниже:
SELECT
`tb_trades`.`symbol` AS `symbol`,
(SUM((`tb_trades`.`volume` * `tb_trades`.`price`)) / SUM(`tb_trades`.`volume`)) AS `avg price`,
SUM(`tb_trades`.`volume`) AS `volume`,
SUM(`tb_trades`.`charges`) AS `total charges`
FROM
`tb_trades`
WHERE
(`tb_trades`.`volume` > 0)
GROUP BY `tb_trades`.`symbol`
ОДНАКО, это, естественно, исключает ПРОДАВАТЬ сборы из общей суммы сборов. Как можно достичь этого мультиусловного поведения?
Большое спасибо!