SQL触发器的平均值

时间:2016-05-24 00:47:32

标签: mysql sql

我对触发器有疑问。

我们说我有两张桌子,一张名为' studentData' ,另一张叫' studentStanding'

  

' studentData'是一个由teacherID,studentID和评级组成的表。   所以不同的老师可能会给单个学生不同的评分

(例如:teacherID:1给予评分:5给学生ID:3和老师ID:7给予评分:10给学生ID:3)

  

studentStanding是由studentID,studentName和averageRating组成的表。

我的目的是创造一个TRIGGER;

每次新教师(示例教师ID:120)给予studentID评分:3, 此TRIGGER将重新计算此学生的平均评分3。

我曾尝试过编写触发器,但我确信这是完全错误的。 这是它的外观:

CREATE TRIGGER updateAVG
AFTER INSERT ON studentData
REFERENCING NEW AS N_ROW
   FOR EACH ROW
    UPDATE studentStanding SET Rating = (
      Select AVG(Rating) 
      from studentData
      )

我期待着能帮助我的人。随意给我的触发器提出建议。谢谢。

注意:这不是学校作业,我保证!

1 个答案:

答案 0 :(得分:3)

CREATE TRIGGER computeAvg
AFTER INSERT ON studentData
FOR EACH ROW
    UPDATE studentStanding
    SET averageRating = (SELECT AVG(rating) FROM studentData
                         WHERE studentStanding.studentID = studentData.studentID)
    WHERE studentID = NEW.studentID;