这是我拥有的查询的简化版本。对每个已下订单的客户说,我想知道他们的订单总价值的百分比是多少。简单查询中除以零除
订单中不能有多个项目,但订单值可能为零,因此我想避免分割错误。 (不,我无法以任何方式更改数据库。)
这样做的最佳方式是什么?编辑:省略零总数实际上是好的,因此接受答案。
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