而不是乘以1.0
,您可以直接转换。这对我来说似乎更清晰。一方面,它明确了您要使用的数据类型。float4
您可能对精确度或近似值感到满意,而不是为精确计算float8
支付额外费用。numeric
SELECT COUNT(*)::float / (SELECT COUNT(name)
FROM x
WHERE d = '0')::float
FROM x, y
WHERE x.a = y.a AND x.b = '0'
GROUP BY y.c
ORDER BY y.c ASC
test=# 选择 1.0 * 5 / 10;
?柱子?
----------------------
0.50000000000000000000
(1 行)
test=# 选择 pg_typeof(1.0 * 5 / 10);
pg_typeof
------------
数字
(1 行)
test=# 选择 5::float / 10::float;
?柱子?
----------
0.5
(1 行)
test=# 选择 pg_typeof(5::float / 10::float);
pg_typeof
------------------
双精度
(1 行)