更新表中的平均值

问题描述 投票:0回答:1

我正在尝试通过添加一些值来更新我的平均分。

我的录取学生表包含(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:
sql oracle11g
1个回答
1
投票

UPDATE NewADMITED_TABLE

SET AVGMARK = (AVGMARK + 10)
——这不再是派生列了

WHERE COURSCODE = 'AAAA'

AND NOGROUP = 2

AND SEMESTER = 'AUTMN

© www.soinside.com 2019 - 2024. All rights reserved.