簡體   English   中英

SQL 查詢:計算百分比

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM