У меня есть следующий запрос для получения и расчета продаж за 2 заданных периода, их фактического роста и роста их индекса.MySQL - избегайте NULL по делению на ноль
Для справочного индекса роста sales growth % + 100
. Так что, если элемент вырос на 8 процентов, то индекс будет 108, так же, как если бы он контрактом 8 процентов, индекс будет 92.
Проблема возникает, когда первый сравнимый год имеет 0 продаж, и следовательно, фактическое значение роста делится на 0 и NULL
возвращается для 100.
Как я могу остановить запрос от возврата NULL на деление на ноль и вернуть его 0?
Это часть приложения PHP, и, таким образом, если решение будет лучше обрабатываться на прикладном уровне, пожалуйста, предложите соответственно в любых ответах.
SELECT
product,
SUM(CASE WHEN yr = 2013 THEN sales ELSE 0 END) AS `period1`,
SUM(CASE WHEN yr = 2014 THEN sales ELSE 0 END) AS `period2`,
SUM(CASE WHEN yr = 2014 THEN sales ELSE 0 END) - SUM(CASE WHEN yr = 2013 THEN sales ELSE 0 END) AS `growth`,
(((SUM(CASE WHEN yr = 2014 THEN sales ELSE 0 END) - SUM(CASE WHEN yr = 2013 THEN sales ELSE 0 END))/
(SUM(CASE WHEN yr = 2013 THEN sales ELSE 0 END))) * 100) + 100 AS `index`
FROM
productlevel_data AS a
WHERE
`group` = 'Confectionery'
AND class = 'Confectionery'
AND category = 'Confectionery'
AND subcategory = 'Seasonal'
AND brand = 'brand'
AND destination LIKE '%'
GROUP BY product
'WHERE sales! = 0'? – Noman