0

テーブルから以下のような結果セットが必要です。

ここに画像の説明を入力

クエリを試しました:

select sdate, sum(PG)/sum(PT)*100 AS Score, avg(score) as Mean from table

しかし、私は正しい平均を得ていません。

平均値は、すべてのスコアの合計 / スコアの総数です。

計算列として平均を表示したい。上記の結果セットでは、スコアの合計は 309 で、4 (行の合計数) で割ると 77.25 になります。

結果セットに示されているように結果を表示したい。

4

3 に答える 3

1

次のようなものを探していると思います:

SELECT sdate, 
       SUM(PG)/SUM(PT)*100 AS Score, 
       (SELECT AVG(score) FROM table) AS Mean 
FROM table

これにより、平均がテーブル全体の平均スコアに設定されます。フィルタリング用の句がある場合はWHERE、それらをサブクエリとメイン クエリの両方に配置する必要があります。

編集

元の SQL ステートメントに がGROUP BY含まれている場合は、そのように聞こえますが、次のクエリを使用して、探しているものを実現できます。

SELECT sdate, 
       SUM(PG)/SUM(PT)*100 AS score, 
       (SELECT AVG(score) 
        FROM (SELECT CAST(SUM(PG)/SUM(PT)*100 AS FLOAT) AS score 
              FROM table 
              GROUP BY sdate) scores) AS Mean
FROM table
GROUP BY sdate

きれいではありませんが、あなたが探しているものを達成すると信じています。

于 2013-04-02T04:56:40.663 に答える
0
DECLARE @mean DECIMAL(5,2);

SELECT @mean = AVG(score) FROM dbo.table;

SELECT sdate, score, Mean = @mean FROM dbo.table;
于 2013-04-02T04:37:56.627 に答える