更新表格中的平均值

时间:2016-12-15 19:21:23

标签: sql oracle11g

我想通过添加一些值来更新我的标记平均值。

我的学生表包含(NOSTUDENT,COURSECODE,SEMESTER,NOGROUPE,MARK)专栏。

我的观点:AverageByGroupe包含相应学期中该课程的学生平均分数。

CREATE OR REPLACE VIEW AverageByGroup  AS
SELECT COURSCODE, NOGROUPE, SEMESTER, AVG(MARK) AS AVGMARK
FROM ADMITED_TABLE GROUP BY COURSECODE,NOGROUPE,SEMESTER;

问题:我希望将给定课程,小组,学期的平均分数更新10,但AVGMARK会注意到一个列,它是正确的UPDATE语法。

我尝试了什么:

UPDATE ADMITED_TABLE
SET AVG(MARK) = SELECT( (AVG(MARK) + 10)
FROM ADMITED_TABLE WHERE COURSCODE = 'AAAA' 
AND NOGROUP = 2
AND SEMESTER = 'AUTMN');

Error:
Error de command ligne: 2 Column: 8
Rapport of error -
Erreur SQL : ORA-00927: missing equal sign
00927. 00000 -  "missing equal sign"
*Cause:    
*Action:

修改: 更清楚的是,这是一个变异表,所以我想要使用的是一个INSTEAD OF INSERT TRIGGER,每当通过调整该学生的标记来标记平均值时,它就会被激活。

对于选择语法错误,我包括select in(

UPDATE ADMITED_TABLE
SET AVG(MARK) = (SELECT (AVG(MARK) + 10)
FROM ADMITED_TABLE WHERE COURSCODE = 'AAAA' 
AND NOGROUP = 2
AND SEMESTER = 'AUTMN');

错误:

ORA-00927: missing equal sign
00927. 00000 -  "missing equal sign"
*Cause:    
*Action:

1 个答案:

答案 0 :(得分:1)

UPDATE NewADMITED_TABLE

SET AVGMARK = (AVGMARK + 10) - 这不再是DERIVED专栏

WHERE COURSCODE = 'AAAA'

AND NOGROUP = 2

AND SEMESTER = 'AUTMN