postgresql – 选择查询自定义计算列以舍入到2个小数位

我有一个表有一些列a,b,我需要添加一个自定义列c_avg,它将具有该值
c_avg = a * 100 / b最多2个十进制值

我的原始表是这样的

id a b
1  1 2
2  2 3
3  2 0

我已经提出了这个查询,但似乎这会将值返回为整数.

select round( CAST((CASE WHEN b=0 THEN '0.00'
        ELSE round(((a*100)/b),2)
   END ) as numeric),2) as c_avg
from table_name

我得到输出

a b c_avg
1 2 0
2 3 0

我需要这样的东西

a b c_avg
1 2 0.50
2 3 0.66
2 0 0

我在amazon redshift上的Postgresql版本是Postgresql 8.0.2

我正在用这张桌子做一些事情

select sum(a) as aa,sum(b) as bb,groub_by_column
round( CAST((CASE WHEN sum(b)=0 THEN '0.00'
    ELSE round(((sum(a)*100)/sum(b)),2)
    END ) as numeric),2) as c_avg
from table group by groub_by_column

这会将我的值返回0而不是0. *

谢谢

postgresql中的除法运算截断为整数值
刚发现

select round((4000/576::float),3) as result;

Meta :: float添加到除法运算中会得到所需的结果,它不会将输出截断为整数值.
谢谢

解决方法

postgresql中的除法运算截断为整数值才发现

select round((4000/576::float),它不会将输出截断为整数值.

谢谢

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...