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子句(“列别名”),即SELECTORDER BY

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

Not all SQL products faithfully implement Standards, of course, but the above should work in SQL Server, for example.

于 2011-09-21T11:01:01.873 回答