2

avg と group by がクエリ ツリーでどのように表現されるのか疑問に思っていました。

次のようなクエリがあります。

SELECT  Stats.StuId, Stats.CrsAve
FROM        (SELECT T.StuId, AVG(T.Grd) AS CrsAvg
        FROM        Transcript T
        WHERE   T.Semester IN (‘F2004’, ‘S2006’)
        GROUP BY    T.StuId) AS Stats
WHERE       Stats.CrsAvg >  3.5 

それで、モジュール GROUP BY と AVG が気になります - それらはどのように描画されるのでしょうか?

4

1 に答える 1

1

「Avg」を使用する必要がありますが、クエリを最適化するには、「Having」句を追加する 2 つの選択を使用しないようにすることができます。

 SELECT T.StuId, AVG(T.Grd) AS CrsAvg
        FROM        Transcript T
        WHERE   T.Semester IN (‘F2004’, ‘S2006’)
        GROUP BY    T.StuId
having AVG(T.Grd) > 3.5

また、テーブルに適切なインデックスを追加することも検討できます。

于 2012-07-10T23:29:42.497 に答える