1. ホーム
  2. sql

[解決済み】単一のクエリで加重平均を計算する

2022-02-22 15:46:22

質問

データ例です。

table A
part    rating   numReviews
A308    100      7
A308    98       89

上記のデータについて、平均視聴率を求めたいのですが。

の合計である必要があります。 rating * numReviews を合計で割ったものです。 numReviews

これは私が試していることですが、正しくない結果(49.07、本来は98.15)が出ています。

select part, 
cast((AVG(rating*numReviews)/sum(numReviews)) as decimal(8,2)) as rating_average
from A group by part order by part

これは1つのクエリでできるのでしょうか?SQL Serverを使用しています。

どのように解決するのですか?

加重平均の定義に戻るだけでよいので、以下のように使用します。 sum() や除算を行うことができます。

select part, sum(rating * numreviews) / sum(numreviews) as rating_average
from a
group by part
order by part;

お好みで10進数に変換してください。

select part,
       cast(sum(rating * numreviews) / sum(numreviews) as decimal(8, 2)) as rating_average
from a
group by part
order by part;