PostgreSQL деление на ноль при заказе - PullRequest
3 голосов
/ 01 ноября 2010

мне нужно выполнить этот запрос в postgres, но я не смог избавиться от этой ошибки

    ERROR: division by zero
SQL state: 22012

вот запрос:

select id,rates_sum,rates_count from tbl_node  order by rates_sum/rates_count DESC;

я знаю, что могу добавить небольшое значение к rates_count, но я получаю неточные значения.

Есть ли способ заставить postgres игнорировать эту ошибку или использовать оператор if для проверки нулей и замены их любым числом. и снова ошибка в заказе по предложению.

Спасибо

Ответы [ 2 ]

8 голосов
/ 01 ноября 2010

Используйте оператор CASE:

SELECT 
    id,
    rates_sum,
    rates_count 
FROM 
    tbl_node  
ORDER BY 
    rates_sum / (CASE rates_count WHEN 0 THEN NULL ELSE rates_count END) DESC NULLS FIRST;

Вы также можете использовать NULLS LAST, если хотите.

0 голосов
/ 01 ноября 2010

как насчет where rates_count != 0?

...