如何计算连接中某列的平均值?

Sed*_*imi 4 sql-server

我有三张桌子

老师

id name 
1  ali
2  reza
Run Code Online (Sandbox Code Playgroud)

课程

id title
1  math
2  litrature
Run Code Online (Sandbox Code Playgroud)

等级表

id courseid teacherid grade 
1  1        1         20
2  2        1         10
3  1        2         17
Run Code Online (Sandbox Code Playgroud)

结果:

teacherid avg(grade)
1         15
2         17
Run Code Online (Sandbox Code Playgroud)

我尝试了一些东西,但没有用

Wor*_*DBA 5

你真正需要做的是SELECTgradetbl,应用AVG聚合函数比grade,然后GROUP BYteacherid像这样:

SELECT teacherid, AVG(grade)
  FROM gradetbl
 GROUP BY teacherid;
Run Code Online (Sandbox Code Playgroud)

对于您指出的结果,根本不需要使用 a JOINJOIN当您想要获取与 关联的数据时,您只需要使用 a teacherid

SELECT t.name, AVG(g.grade)
  FROM gradetbl AS g
  JOIN teacher as t
    ON t.id = g.teacherid
 GROUP BY t.name;
Run Code Online (Sandbox Code Playgroud)

您应该查看SELECTGROUP BYAVG的文档以获取完整示例和常见用法的解释。