我有这个问题:
Select count(incidentnumber) as average
from incidents
Where IncidentStationGround <> firstpumparriving_deployedfromstation;
我得到了一个结果,它有点像20,000。但是如何将此数字转换为百分比?另外,我希望结果为十进制,可以吗?
答案 0 :(得分:1)
您在评论中的查询应该有效 将计数转换为十进制以实现小数百分比
count(incidentnumber)::decimal*100
答案 1 :(得分:0)
假设总数的百分比:
SELECT (count(incidentnumber) FILTER (WHERE IncidentStationGround <> firstpumparriving_deployedfromstation)
* 100.0) / count(*) AS average
FROM incidents;
将结果乘以numeric
常量:100.0
(带小数点!),以隐式地将bigint
count()
的结果转换为numeric
。您也可以使用显式广播。
round()
是可选的。你也可以只返回许多小数位数。
还假设incidentnumber
被定义为NOT NULL,因此count(*)
与count(incidentnumber)
的行为相同,速度更快。表定义将提供该信息。
假设您正在运行当前版本9.4(您也忘了提供它)。相关答案与链接和旧版本的替代:
关于round()
和numeric
: