3

質問、

私は次のようなテーブルを持っています:

PID Category Year
1    AAA     2011
2    AAA     2012
3    BBB     2011
4    CCC     2010
5    CCC     2011
6    CCC     2012

出力を次のように表示する必要があります。

Subtotal Total Category  Year   Percentage
1         1      CCC      2010    100%
1         2      AAA      2011    50%
1         2      BBB      2011    50%
1         2      AAA      2012    50%
1         2      CCC      2012    50%

小計は、特定の年のそのカテゴリの数です。合計は、すべてのカテゴリを含む特定の年の数です。パーセンテージは小計/合計 * 100

4

2 に答える 2

7
select subtotal, 
       total,
       category, 
       year,
       subtotal / total * 100 as percentage
from (
  select count(*) over (partition by category, year) as subtotal,
         count(*) over (partition by year) as total,
         category,
         year
  from the_unknown_table
) t
order by year;
于 2012-12-11T18:54:12.877 に答える
4

ウィンドウ/分析関数を使用したい:

select subtotal,
       sum(subtotal) over (partition by year) as Total,
       category, year,
       (cast(subtotal*100.0/sum(subtotal) over (partition by year)  as varchar(255))+'%'
       ) as Percentage
from (select year, category, count(*) as subtotal
      from t
      group by year, category
     ) t
于 2012-12-11T18:53:59.807 に答える