我有一个可以分组的数据集,想知道每个组中行的百分比.
这看起来几乎可行,除了因为imho缺少类型转换而为每个组返回0
SELECT COUNT(*) / (SELECT COUNT(name)
FROM x
WHERE d = '0')
FROM x, y
WHERE x.a = y.a AND x.b = '0'
GROUP BY y.c
ORDER BY y.c ASC
Run Code Online (Sandbox Code Playgroud)
我该如何正确地投这个?
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
Run Code Online (Sandbox Code Playgroud)
测试=#选择1.0 * 5 / 10;
?柱子?
------------------------
0.50000000000000000000
(1 行)
测试=#选择pg_typeof(1.0 * 5 / 10);
pg_typeof
------------
数字
(1 行)
测试 =# 选择 5::float / 10::float;
?柱子?
----------
0.5
(1 行)
测试=#选择pg_typeof(5::float / 10::float);
pg_typeof
------------------
双精度
(1 行)
| 归档时间: |
|
| 查看次数: |
5491 次 |
| 最近记录: |