这是我的查询的简化版本。对于已下订单的每位客户,我想知道他们的总订单价值占绿色商品的百分比。
订单中不能有多个商品,但订单价值可能为零,所以我想避免分红错误。 (不,我无法以任何方式更改数据库。)
最好的方法是什么?编辑:省略零总计实际上很好,因此接受了答案。
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
答案 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