Sta*_*tan 6 sql pivot case count
我有一个包含以下列的Client表.
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
Run Code Online (Sandbox Code Playgroud)
我需要显示每年每组的百分比.我认为这需要一个数据透视表:
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%
Run Code Online (Sandbox Code Playgroud)
这个查询给了我每年的计数:
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
Run Code Online (Sandbox Code Playgroud)
我尝试使用Case Count进行了大量的查询迭代,但无法弄清楚如何获得性别,无家可归者和失业者的计数或百分比.有了这个,我想我可以转动表格以获得我需要的显示.
Jay*_*Jay 10
我认为应该这样做:
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)
Run Code Online (Sandbox Code Playgroud)
我不知道你是否可以拥有除男性/女性以外的其他值或是/否,如"未知".在这种情况下,你必须决定,例如,10个男性,5个女性和5个未知数是否意味着50%的男性,即50%被认为是男性,或66%是男性,即66%的性别已知的人是男性.