![](/img/trans.png)
[英]Calculating a percentage from database with sql query(SQL Management studio 2012)?
[英]SQL Query: calculating percentage
如果我想找到來自 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'
謝謝你。
您將一個整數除以一個更大的整數。 結果總是為零。 相反,在除法之前將第一個計數乘以 100.0。 這會將第一個計數轉換為浮點數,當除以整數時,將給出一個浮點數,從而給出您需要的百分比。
你在做一個整數除法。 如果結果低於 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'
如果您想選擇小數點的數量,您還可以按如下方式合並ROUND()
:
,ROUND(CAST(COUNT(var1) AS FLOAT)/COUNT(var2),[# decimals]) AS 'mypercentage'
select AVG(CASE WHEN ZIP = '12345'
THEN 1 ELSE 0
END) * 100.00 as “12345 Zip Code Percentage”
from PERSON P
嘗試這個:
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
試試這個,我添加了額外的條件以避免除以 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'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.