這是我擁有的查詢的簡化版本。對每個已下訂單的客戶說,我想知道他們的訂單總價值的百分比是多少。簡單查詢中除以零除
訂單中不能有多個項目,但訂單值可能爲零,因此我想避免分割錯誤。 (不,我無法以任何方式更改數據庫。)
這樣做的最佳方式是什麼?編輯:省略零總數實際上是好的,因此接受答案。
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
這可能會過濾掉一些訂單。 – Quassnoi 2009-04-20 16:28:41
實際上我認爲最好是說「where order.value <> 0」 - 這將會過濾出他的記錄,而不需要「having」子句。 – 2009-04-20 16:29:52