Это упрощенная версия запроса, который у меня есть. Скажем, для каждого клиента, который сделал заказ, я хочу знать, какой процент от общей стоимости заказа был для зеленых товаров.
В заказе не может быть несколько позиций, но возможно, что стоимость заказа равна нулю, поэтому я хочу избежать ошибок деления. (И нет, я никак не могу изменить базу данных.)
Какой лучший способ сделать это? РЕДАКТИРОВАТЬ: Пропуск нулевых итогов это нормально, следовательно, принятый ответ.
SELECT order.customer,
SUM
(
CASE items.color WHEN 'Green' THEN order.value
ELSE 0 END
) * 100 / sum(order.value) AS percentage,
SUM(order.value) AS total_value
FROM orders
INNER JOIN item
ON order.item_id = item.item_id
GROUP BY order.customer