2016-12-15 66 views
0

我正在通過向其添加一些值來更新我的標記平均值。更新表格中的平均值

我的學生表包含(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觸發器至極火災標記平均值通過調整該標記來改變。

對於選擇語法錯誤,我包括選擇(

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

你有語法錯誤 - 括號應該包括SELECT。你可以發佈修復後得到的錯誤嗎? –

+1

這是不可能的,這是一個視圖,除非將所有選定列寫入新表,否則不能直接修改此視圖中的值。然後執行我給你的下面的查詢。 (您的查詢中也有一些語法錯誤) – LONG

回答

1

UPDATE NewADMITED_TABLE

SET AVGMARK = (AVGMARK + 10) - 這不是一個派生列了

WHERE COURSCODE = 'AAAA'

AND NOGROUP = 2

AND SEMESTER = 'AUTMN