Postgresql:计算百分比,但铸造不会';行不通
我在下面的查询中尝试对列进行算术运算。我已经根据postgres文档使用了正确的强制转换,但是()但是有人仍然在我的bigint列中剪切结果,并避免在结果集中使用小数点Postgresql:计算百分比,但铸造不会';行不通,postgresql,sqldatatypes,Postgresql,Sqldatatypes,我在下面的查询中尝试对列进行算术运算。我已经根据postgres文档使用了正确的强制转换,但是()但是有人仍然在我的bigint列中剪切结果,并避免在结果集中使用小数点 select * from ( select (degree_one + degree_two) as degree_easy, degree_three as degree_hard, (((degree_one + degree_two)/(degree_one + degree_
select * from (
select (degree_one + degree_two) as degree_easy,
degree_three as degree_hard,
(((degree_one + degree_two)/(degree_one + degree_two + degree_three))::decimal) as easy_percent, ((degree_three/(degree_one + degree_two + degree_three))::decimal) as hard_percent from recommendation_degree
) as dc
where dc.degree_easy >= 4 and dc.degree_hard >= 4
我做错了什么?除了十进制,我还尝试了float和real,但它们都给出了相同的结果。您可以尝试在除法中强制计算十进制值,否则我认为您将最终执行整数除法(然后将除法转换为十进制),结果将不正确 试试这个:
select * from (
select (degree_one + degree_two) as degree_easy,
degree_three as degree_hard,
(degree_one::decimal + degree_two::decimal)/(degree_one::decimal + degree_two::decimal + degree_three::decimal) as easy_percent,
degree_three::decimal/(degree_one::decimal + degree_two::decimal + degree_three::decimal) as hard_percent
from recommendation_degree
) as dc
where dc.degree_easy >= 4 and dc.degree_hard >= 4
可能没有必要同时计算除数和除数,我认为当只计算除数时,它应该会起作用
实际按照我想要的方式使用x::real work。我用了你的符号,但把小数换成了实数。