Ошибка делителя нуля при расчете среднего - PullRequest
1 голос
/ 26 января 2020

Я пишу запрос, чтобы получить статистику продаж по запросу. Он отлично работает для некоторых дат, но когда я расширяю диапазон, он выдает ошибку «ORA-01476: делитель равен нулю». Я считаю, что это связано с линией, где я рассчитываю среднее значение. Я не могу использовать встроенную функцию avg, поскольку она не дает того же значения. Как я могу это исправить.

select distinct p.product_code, sum(oi.mass_ordered) "TOTAL MASS ORDERED KG",--OI.ROLL_SHEET,
sum(oit2.mass_shipped) "shipped KG",
(sum(oi.price *(OIt2.MASS_shipped) )/sum(oit2.mass_shipped)) "AVERAGE CALCULATED",
sum(oi.price *(OIt2.MASS_shipped/1000) ) "TOTAL ORDER ITEM PRICE" , count(oi.order_item) "ITEM_COUNT"
from product p
left outer join orderitem oi on p.product_code = oi.product_code
left outer join orderheader oh on oi.order_code = oh.order_code
INNER JOIN ORDERITEMTOTAL oit2 on oi.order_code = oit2.order_code and oi.order_item = oit2.order_item
where oh.date_cust_issued between to_date('01/10/2019 00:00' , 'dd/mm/yyyy HH24:MI') and 
to_date('09/10/2019 23:59' , 'dd/mm/yyyy HH24:MI')
group by p.product_code
order by p.product_code 

1 Ответ

3 голосов
/ 26 января 2020

Используйте NULLIF(), чтобы избежать деления на ноль:

(sum(oi.price * OIt2.MASS_shipped) /
 nullif(sum(oit2.mass_shipped), 0)
) as "AVERAGE CALCULATED",

Это превращает знаменатель 0 в NULL, поэтому выражение возвращает NULL вместо ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...