[英]Getting out of divide by zero in simple query
這是我查詢的簡化版本。 對於每個已下訂單的客戶,我想知道他們的訂單總價值中綠色商品的百分比。
訂單中不能有多個項目,但是訂單值有可能為零,因此我想避免除法錯誤。 (不,我無法以任何方式更改數據庫。)
最好的方法是什么? 編輯:忽略零總數實際上很好,因此可以接受。
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
參見此處: SQL Server除以零的有效處理
SELECT order.customer,
SUM
(
CASE items.color WHEN 'Green' THEN order.value
ELSE 0 END
) * 100 / CASE sum(order.value) WHEN 0 THEN 1 ELSE SUM(order.value) END AS percentage,
SUM(order.value) AS total_value
FROM orders
INNER JOIN item
ON order.item_id = item.item_id
GROUP BY order.customer
加
having sum(order.value) <> 0
分組之后
您能否僅過濾掉order.value = 0的訂單?
Where
order.value <> 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.