0

各連絡先が近隣に住んでいた時間を含む連絡先テーブルがあります。

 ID    First_Name   Last_Name    Neighborhood_Time
 1      John         Smith        1-2 years
 2      Mary         Jones        2-5 years
 3      Dennis       White        2-5 years
 4      Martha       Olson        5+ years
 5      Jeff         Black        5+ years
 6      Jean         Rogers       2-5 years

時間の割合を表示したい場合、結果は次のようになります。

 One_to_2_Years   Two_to_5_Years       5+_Years
      16                50                 33

これは私が使用しているものです:

 select 
 sum(case when Neighborhoods_time ='1-2 years' then 1 else 0 end)*100/(select count(*) from contact) as One_to_2_Years,    
 sum(case when Neighborhoods_time ='2-5 years' then 1 else 0 end)*100/(select count(*) from contact) as Two_to_6_Years,
 sum(case when Neighborhoods_time ='5+years' then 1 else 0 end)*100/(select count(*) from contact) as Six_to_10_Years
  from dbo.contact 

これは私の結果です:

  One_to_2_Years   Two_to_5_Years       5+_Years
        0               0                  16
        16              33                 0
        0               16                 16

各列の下の数値は正しいことがわかりますが、それらを合計するのに問題があります。

私は何が欠けていますか?

ありがとう。

4

2 に答える 2

0

Neighborhoods_time でグループを追加

于 2012-07-19T13:41:52.237 に答える
0

クエリの基礎は次のように作成できます

select 
    Neighborhood_Time,
    100*COUNT(*)/(Select COUNT(*) from contact) as percentvalue
from 
    contact
group by 
    Neighborhood_Time

水平に配置する場合は、ピボットを使用する必要があります

select
*
from
(
select 
    Neighborhood_Time,
    100*COUNT(*)/(Select COUNT(*) from contact) as percentvalue
from 
    contact
group by 
    Neighborhood_Time
) src
PIVOT
( SUM(percentvalue) for Neighborhood_Time in ([1-2 years],[2-5 years],[5+ years])) as pt
于 2012-07-19T14:23:50.377 に答える