0

このコーディング部分 - TAT - は簡単かもしれませんが、私はこれに頭を悩ませています。

これは、各女の子のおもちゃの数を返します

Select Toys,
Count(Girls),
TAT
from Table1 (nolock)

すなわち

Girl       Toys           TAT
_____      ______         ___________

Kelly       1              0-5
Michelle    1              16-30
Grace       1              31+
Katy        1              6-10
Kelly       1              16-30

これは、各年齢範囲のおもちゃの数を返します

Select TAT,
Count(TAT)
from Table1 (nolock)

すなわち

TAT          ??????
_____        ___________
0-5             1
6-10            0
11-15           1
16-30           2
31+             1

次に行う必要があるのは、1 (16 ~ 30 歳の場合はケリー) を、それが置かれた年齢層のおもちゃの数 (16 ~ 30 歳の場合は 2) で割ることです。

1  / 2  = 50.00%

それ、どうやったら出来るの?????の列 私が立ち往生しているところです。

ありがとうございました!ホリー

4

2 に答える 2

0

あなたは本当に混乱しているように聞こえます-私の心の良さから、私はこれを刺しました. これが正しくない場合は、正確に必要なものについてさらに情報を投稿する必要があります。

a. クエリの例が正しくありません (欠落しているためにエラーになりますGROUP BY)

b. サンプル データが不完全です。最初のステップでは、データは Girl と TAT でグループ化することを示しているように見えますが、クエリで、Girl と TAT のペアごとのおもちゃではなく、女の子ごとのおもちゃをカウントしていると明示的に述べています。どっちが正しい?

「各日付範囲の各おもちゃの割合を表示する」. サンプルデータが不完全な場合、これはそれほど単純ではありません

;WITH GirlTATCount AS (
  SELECT
    Girl,
    TAT,
    COUNT(*) as [ToyCount]
  FROM Table1
  GROUP BY Girl, TAT
)
, ToysInAgeRange AS (
  SELECT
    TAT,
    COUNT(*) as [ToyCount]
  FROM Table1
  GROUP BY TAT
)
SELECT
  gtc.Girl,
  gtc.TAT,
  gtc.ToyCount,
  CAST(gtc.ToyCount as float) / CAST(tar.ToyCount as float) as [%]
FROM GirlTATCount gtc
JOIN ToysInAgeRange tar
  ON tar.TAT = gtc.TAT
于 2013-05-22T01:46:52.670 に答える
0
create table #table1 (Girl varchar(20), toys int, tat varchar(10))  
insert into #table1 (Girl, toys, tat)  
 values ('Kelly',1,'0-5')  
,('Michelle',1,'16-30')  
,('Grace',1,'31+')  
,('Katy',1,'6-10')  
,('Kelly',1,'16-30')  

declare @dividend numeric(5,2) = 1  
;with gtcount as (select tat, COUNT(*) ctr  
                  from #table1  
                  group by tat )  
select tat,ctr, @dividend/ctr percentage from gtcount  

これが役に立てば幸いです...
エルマー

于 2013-05-22T06:11:31.780 に答える