2012-05-07 172 views
4

我有一個客戶表,其中包含以下列。SQl按年查詢結果

Admit_date Gender  Homeless Unemployed Deleted 
4/2/2012  Male   Yes   Yes   0 
1/1/2011  Female  Yes   Yes   0 
12/2/2011  Male   No   No   0 
5/23/2009  Female  Yes   Yes   0 
4/3/2009  Male   No   No   0 
7/4/2010  Male   Yes   Yes   0 
9/2/2010  Male   Yes   Yes   0 

我需要顯示每個組在每年的百分比。我認爲這將需要一個數據透視表:

    2009  2010  2011 2012 
Admitted   2   2  2  1 
Male   50%  100%  50% 100% 
Female   50%   0  50%  0% 
Homeless  50%  100%  50%  100% 
Unemployed  50%  100%  50%  100% 

該查詢給了我每年的計數:

select year(admit_date_c) as Year_of_Admit,count((admit_date_c)) as Admitted 
from clients where deleted = '0' 
group by year(admit_date_c) 

Year_of_Admit Admitted 
    2009    2 
    2010    2 
    2011    2 
    2012    1 

我試了無數次迭代查詢使用情況計數,但無法弄清楚如何獲得性別,無家可歸者和失業者的數量或百分比。一旦我有了,我想我可以旋轉桌子來獲得我需要的顯示。

+2

**什麼是**數據庫系統,以及哪個版本? ** SQL **只是結構化查詢語言 - 許多數據庫系統使用的語言 - SQL是** NOT **數據庫產品......很多東西都是特定於供應商的 - 所以我們確實需要知道數據庫系統你正在使用.... –

回答

7

我想這應該這樣做:

select year(admit_date) as year_of_admit, 
    sum(case when gender='Male' then 1 else 0 end)*100/count(*) as Male, 
    sum(case when gender='Female' then 1 else 0 end)*100/count(*) as Female, 
    sum(case when homeless='Yes' then 1 else 0 end)*100/count(*) as Homeless 
from client 
group by year(admit_date) 

我不知道你是否能比男/女或有/無,如「未知」的其他值。在這種情況下,你必須決定是否有10名男性,5名女性和5名未知人意味着50%是男性,即50%是男性,或66%是男性,即66%的性別是已知的是男性。

+0

就是這樣。我提供你的幫助。 – Stan