2012-05-07 22 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 **は、多くのデータベースシステムで使用されている言語であるStructured Query Languageです.SQLはデータベース製品ではありません。多くのものはベンダー固有のものなので、実際にはどのデータベースシステムあなたは使っています.... –

答えて

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