首页 > 解决方案 > Postgresql 舍入数值

问题描述

我试图从下面的查询中得到小数点后 3 位的输出。

我得到的输出是 2.2600

如果我在下面的圆形函数中将参数 4 更改为 3,则输出将为 2.300

这是不正确的,它应该是 2.26

Select date(time), 

    round((count(case WHEN status='404 NOT FOUND' THEN 1 END))
    /
    (count(*))::numeric,4) * 100 as error_percentage

from log GROUP BY date(time)
ORDER BY error_percentage DESC

标签: postgresql

解决方案


你可以使用:

SELECT date(time), 
    ROUND(100.0 * (count(*) FILTER(WHERE status='404 NOT FOUND'))/(count(*)),3) 
    as error_percentage
FROM log 
GROUP BY date(time)
ORDER BY error_percentage DESC

推荐阅读