我有 2 个表: Marks (studentnum,marks) Student (SNum, SName)
如果我做
选择 SName,marks-avg(marks) from Marks join Student on SNum = studentnum
然后我只返回 1 行。
有没有办法在不为平均值分配变量的情况下返回所有学生姓名列表以及学生分数与平均值的差异(学生分数 - 平均值)?
您想要混合聚合值和非聚合值。这使用子查询,但可能还有其他选项,具体取决于您的服务器。
SELECT
SName,
marks - (SELECT avg(marks) FROM Marks as m2 WHERE m2.studentnum = m.studentnum)
FROM
Marks as m INNER JOIN
Student as s
ON s.SNum = m.studentnum
尝试这个:
Select s.sname, (m.mark - temp.avg)
From marks m
Inner join (select studentnum, avg(mark) as avg from marks group by studentnum) temp
On temp.studentnum = m.studentnum
Inner Join students s
On s.snum = m.studentnum