如果我想找到来自邮编区域12345的人的百分比,我会将拥有该邮政编码的人数除以总人数...我在示例中缺少的是什么查询下面?我无法弄清楚如何正确显示百分比。它只是说0%。
select (count(P.PERSON_ID) / (select count(*) from PERSON P)) * 100.00
as “12345 Zip Code Percentage”
from PERSON P
where P.ZIP = '12345'
谢谢。
答案 0 :(得分:11)
您将整数除以更大的整数。结果总是为零。相反,在除法之前将第一个计数乘以100.0 。这将第一个计数转换为浮点数,当除以整数时,它将给出一个浮点数,从而得到你需要的百分比。
答案 1 :(得分:2)
你正在进行整数除法。如果结果低于1,它将始终显示0 * 100.00,因此始终为0.如果需要准确的百分比,则需要将其中一个变量转换为浮点数。
select (count(P.PERSON_ID) / CAST ((select count(*) from PERSON P) As Float)) * 100.00
as “12345 Zip Code Percentage”
from PERSON P
where P.ZIP = '12345'
答案 2 :(得分:1)
如果您想选择小数点数,您还可以合并ROUND()
,如下所示:
,ROUND(CAST(COUNT(var1) AS FLOAT)/COUNT(var2),[# decimals]) AS 'mypercentage'
答案 3 :(得分:0)
试试这个:
SELECT (P.SubSet * 100.00)/p.Total AS "12345 Zip Code Percentage"
FROM (
SELECT COUNT(CASE WHEN ZIP = '12345' THEN 1 ELSE 0 END ) Subset,
COUNT(*) Total
FROM PERSON
) P
答案 4 :(得分:0)
试试这个,我添加了额外的条件以避免除以0错误:
select
CASE
WHEN (select count(*) from PERSON P) > 0 THEN (CAST(count(P.PERSON_ID) As Decimal) / CAST((select count(*) from PERSON P)As Decimal)) * 100.00
ELSE 0 END
as “12345 Zip Code Percentage”
from PERSON P
where P.ZIP = '12345'
答案 5 :(得分:0)
select AVG(CASE WHEN ZIP = '12345'
THEN 1 ELSE 0
END) * 100.00 as “12345 Zip Code Percentage”
from PERSON P