【问题标题】:SQL: Finding Average ScoreSQL:求平均分
【发布时间】:2013-06-13 22:10:51
【问题描述】:

给定表格,我正在寻找一个查询来计算给定老师的给定问题的平均分数。

如果我要在表中添加另一列,例如 SCHOOLID,并希望有一列可以计算该学校给定问题的平均值,我该怎么做?

提前感谢您的所有帮助!

【问题讨论】:

    标签: sql sql-server-2008 average


    【解决方案1】:
    select teacherId, questionid, AVG(Score)
    From myTable
    group by teacherId, questionid
    

    【讨论】:

    • 知道了!我以为这很简单。将其插入表中,我可以像这样运行更新语句: update #TEST set AVGSCORE_TEACHER = x.score from #TEST t join ( select TEACHERID, questionid, score = AVG(Score) From #TEST group by teacherId, questionid ) x on t.TEACHERID = x.TEACHERID
    • 对于您的 UPDATE 语句,您需要将:AND t.questionID = x.questionID 添加到您的加入中。
    【解决方案2】:

    您可以创建一个存储过程来处理整个需求

    CREATE PROCEDURE avarageCalc
    (
       @teacherid nvarchar(5) = null,
       @questionid int = null,
       @schoolid int = null
    )
    AS
    Begin
    
        SELECT AVG(SCORE) as Avarage 
                       FROM Table 
                       WHERE (TeacherID = @teacherid OR @teacherid IS NULL) AND 
                             (QuestionId = @questionid OR @questionid IS NULL) AND
                             (SchoolId = @schoolid OR @schoolid IS NULL)
    
    END
    

    【讨论】:

      【解决方案3】:

      你可以这样做:

      SELECT TeacherId, QuestionId, AVG(Score)
      FROM TABLE-NAME
      GROUP BY TeacherId, QuestionId
      

      以下是一些有用的链接:

      1. 3schools
      2. SQL Server - MSDN

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-27
        • 2014-05-23
        • 1970-01-01
        相关资源
        最近更新 更多