8

次の列を持つ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 

各年の各グループの割合を表示する必要があります。これにはピボットテーブルが必要になると思います。

                 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

ケースカウントを使用してクエリを何度も繰り返しましたが、性別、ホームレス、失業のカウントまたはパーセンテージを取得する方法がわかりません。それができたら、テーブルを回転させて必要なディスプレイを表示できると思います。

4

1 に答える 1

12

私はこれがそれをするべきだと思います:

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%を意味するのかを判断する必要があります。男性です。

于 2012-05-07T15:24:37.273 に答える