2

いくつかの基本的な SQL 関数を使用しようとしています。いくつかのデータの平均を取得し、降順で並べ替える必要があります。私が得るエラーは「グループ機能は許可されていません」です

テーブル:

STUDENTS
-----------
ID
CLASS
GRADE
ROOM

SQL:

    SELECT ID, class, AVG(Grade) AS AvgGrade
      FROM Students
     GROUP BY AVG(Grade)
    HAVING AVG(Grade) >= 3.0
     ORDER BY AVG(Grade) DESC

ORDER BY は HAVING 句では使用できないため、関数を繰り返す必要があると言われました。何か助けはありますか?

4

3 に答える 3

5

GROUP BY avg(Grade)意味がありません。

式はGROUP BY、集計を適用するグループを定義します。

おそらくあなたが必要ですGROUP BY ID, class

于 2011-09-19T23:20:17.887 に答える
4

avg(Grade)を下にすることはできませんGROUP BY

あなたの例では、次のものが必要ですGROUP BY ID, class

于 2011-09-19T23:20:26.387 に答える
0

標準 SQL では、AS句からの句 (「列エイリアス」)のみが句SELECTで許可されます。ORDER BY

SELECT ID, class, AVG(Grade) AS AvgGrade
  FROM Students
 GROUP BY ID, class
HAVING AVG(Grade) >= 3.0
 ORDER BY AvgGrade DESC;

もちろん、すべての SQL 製品が標準を忠実に実装しているわけではありませんが、上記はたとえば SQL Server で機能するはずです。

于 2011-09-21T11:01:01.873 に答える