簡體   English   中英

在簡單查詢中擺脫零除

[英]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
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM