2014-10-10 55 views
0

我已经尝试过在这里搜索答案,但迄今为止它一直是失败的原因。 我是第一个SQL类的学生。如何在不添加新列的情况下查找整体平均评分

这是问题。

提供一个字母顺序的学生(学生证和姓名),其平均总分为 ,C等于或低于(小于80)。 该名称应该是一列,姓氏第一,然后按姓氏和名字排序。

这是我的代码。

SELECT GRADE.STUDENT_ID,Last_Name || ', '||First_Name AS Student_Name 
FROM GRADE,Student 
WHERE Student.STUDENT_ID = GRADE.STUDENT_ID 
HAVING AVG(Numeric_Grade) <= 80 
ORDER BY Last_Name,First_Name; 

我使用HAVING子句得到这个错误信息:ORA-00937:不是单组函数。

我不知道怎么弄的平均等级...任何帮助,将不胜感激 预先感谢您

+1

如果你得到一个ORA错误,首先在询问之前搜索原因。 http://www.ora-error.com/这是一个开始的好地方。 – Nitish 2014-10-10 06:26:47

回答

0

你应该GROUP BY子句调用HAVING或任何agregate功能

例如前:

SELECT GRADE.STUDENT_ID,Last_Name || ', '||First_Name AS Student_Name 
FROM GRADE,Student 
WHERE Student.STUDENT_ID = GRADE.STUDENT_ID 

--Important 
GROUP BY Student.STUDENT_ID 

HAVING AVG(Numeric_Grade) <= 80 
ORDER BY Last_Name,First_Name; 

然后你就可以到你的SELECT子句中加入AVG呼吁为例AVG(Numeric_Grade) as AverageGrade。您可能需要向GROUP BY子句添加更多列以便能够在SELECT子句中访问它们。

+0

我懂了,增加了几个专栏。非常感谢!!!!! – 2014-10-10 05:12:05

相关问题