首页 > 解决方案 > 计算百分比显示只有 100 perc PostgreSQL

问题描述

我正在计算比率,但我不明白为什么它只显示 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

标签: sqlpostgresqlgroup-bycountpercentage

解决方案


这称为整数除法:由于分子和分母都是整数值,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

推荐阅读