不是通过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=# select 1.0 * 5/10;
?column?
------------------------
0.50000000000000000000
(1 row)
test=# select pg_typeof(1.0 * 5/10);
pg_typeof
-----------
numeric
(1 row)
test=# select 5::float/10::float;
?column?
----------
0.5
(1 row)
test=# select pg_typeof(5::float/10::float);
pg_typeof
------------------
double precision
(1 row)
哇......我喜欢这一个:) 有时,最简单的解决方案躲避一个... –