我正在尝试通过添加一些值来更新我的平均分。
我的录取学生表包含(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 语法错误,我将 select 包含在 (
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:
UPDATE NewADMITED_TABLE
SET AVGMARK = (AVGMARK + 10)
——这不再是派生列了
WHERE COURSCODE = 'AAAA'
AND NOGROUP = 2
AND SEMESTER = 'AUTMN