在简单查询中排除零

时间:2009-04-20 16:24:32

标签: sql database

这是我的查询的简化版本。对于已下订单的每位客户,我想知道他们的总订单价值占绿色商品的百分比。

订单中不能有多个商品,但订单价值可能为零,所以我想避免分红错误。 (不,我无法以任何方式更改数据库。)

最好的方法是什么?编辑:省略零总计实际上很好,因此接受了答案。

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

4 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

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

答案 2 :(得分:2)

添加

having sum(order.value) <> 0

小组之后

答案 3 :(得分:2)

你能过滤掉order.value = 0的订单吗?

Where
  order.value <> 0