次の形式のデータがあります。
TYPE AMOUNT
Book £2
Pen £1
Book £3
これを加重平均として出力しようとしています:
TYPE Weighted Average
Book 0.833333333
Pen 0.166666667
これまでのところ、私は持っています:
Select TYPE, AMOUNT/SUM(AMOUNT)
FROM MyTable
Group by TYPE
これにより、必要な結果が得られるはずです。
select type
, cast(sum(amount) as decimal(10,5))/(select sum(amount) from t)
from t
group by type
デモの Sql Fiddle を参照してください
これはうまくいく
DECLARE @Table1 TABLE (TYPE VARCHAR(10),AMOUNT FLOAT)
INSERT INTO @Table1 SELECT 'Book',2 UNION ALL SELECT 'Pen',1 UNION ALL SELECT 'Book',3
DECLARE @Total FLOAT
SELECT @Total=SUM(AMOUNT) FROM @Table1
SELECT TYPE,SUM(AMOUNT/@Total) FROM @Table1 GROUP BY TYPE