Рассчитать процент показывает только 100 за c PostgreSQL - PullRequest
1 голос
/ 13 марта 2020

Я рассчитываю рассчитать рацион и не понимаю, почему он показывает только 0 или 100. Формула работает правильно, когда я не собираю ее вместе:

case 
    when (count(status_id) filter (where status_id = 2)) = 0 then 0 
    else ((count(status_id) filter (where status_id = 2))/count(status_id))*100 end as conversion_rate

1 Ответ

1 голос
/ 13 марта 2020

Это называется целочисленным делением: поскольку числитель и знаменатель являются целочисленными значениями, Postgres дает целочисленный результат.

Чтобы избежать этого, вы можете сделать:

case when (count(status_id) filter (where status_id = 2)) = 0 
    then 0 else 
    100.0 * count(status_id) filter (where status_id = 2) / count(status_id) 
end as conversion_rate
...