これは私が持っているクエリの簡略化されたバージョンです。注文した各顧客について、その合計注文額の何%がグリーン商品であるかを知りたいと思う。簡単なクエリで0で除算すること
オーダー内に複数のアイテムが存在することはできませんが、オーダー値がゼロである可能性がありますので、除算エラーを回避したいと考えています。 (そして、いいえ、私はデータベースを一切変更することができません)
これを行うにはどうすればよいでしょうか?編集:ゼロ合計を省略することは実際には、したがって受け入れられた答えは大丈夫です。
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
実際には、 "where order.value <> 0"と言ってもいいと思います。それはレコードをフィルタリングして、 "having"句の必要性を排除します。 –
それは本当ですが、ユーザーに売却された緑色の商品が0%だったことを示すレポートを見たいというチャンスは何ですか? –