我正在尝试使用一些基本的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子句一起使用,我需要重复该功能。有什么帮助吗?
答案 0 :(得分:5)
GROUP BY avg(Grade)
没有任何意义。
GROUP BY
表达式定义了您希望聚合应用于的组。
大概你需要GROUP BY ID, class
答案 1 :(得分:4)
avg(Grade)
下无法GROUP BY
。
在您的示例中,您必须拥有:GROUP BY ID, class
。
答案 2 :(得分: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。