0

Age、Gender、Agreed の 3 つのフィールド名があります。

Agreed には、Agreed と Not Agreed の 2 種類の値があります。

私がやりたいのは、同意した年齢と性別の COUNT と %、および Not Agreed 値を持つ年齢と性別の COUNT と % を取得することです。

レイアウトを次のようにしたいと考えています。

AGE           GENDER            AGREED
93 600  40%   Female 700 62%   Agreed
   1300 60%          320 38%   Not Agreed

最初に、私は数字を作っただけですが、上記のサンプルから、どのようなレイアウトが必要かを示しようとしていることを覚えておいてください.

各年齢には 2 セットの値があります。同意した人の COUNT とその割合、および同意していない人の COUNT 値とその割合。

性別も同じ。

これが混乱しないことを願っています。

以下は私が取り組んでいるコードですが、間違った方向に進んでいると信じています。

よろしくお願いします。

Select gender, age, agreed, count(agreed)totalAgreed,Agreed = convert(VARCHAR,convert(MONEY,100.0 * count(agreed) /(SELECT count(agreed) FROM   myTable)), 1) + '%' 

From myTable
Group By gender, age, agreed
4

2 に答える 2

0

カウントを取得するには、性別と年齢で集計するだけです。必要に応じて条件付き集計を使用できます。次のクエリは、カウントとパーセンテージを数値として取得します。

select gender, age, count(*) as cnt,
       sum(case when agreed = 'Agreed' then 1 else 0 end) as NumAgreed,
       sum(case when agreed = 'NotAgreed' then 1 else 0 end) as NotAgreed,
       avg(case when agreed = 'Agreed' then 1.0 else 0 end) as NumAgreedRatio,
       avg(case when agreed = 'NotAgreed' then 1.0 else 0 end) as NotAgreedRatio
from myTable
group by gender, age

ご希望のテーブルとは少し形状が異なります。これも機能しますか?また、私は数値を数値として保持するのが好きなので、わざわざ数値をパーセントに変換しませんでした。

于 2013-01-05T19:26:43.220 に答える