我有2张桌子: 标记(studentnum,marks) 学生(SNum,SName)
如果我这样做
选择SName,mark-avg(marks)from Marks join Student on SNum = studentnum
然后我只返回1行。
有没有办法在不指定平均变量的情况下返回所有学生姓名列表以及学生成绩和平均成绩(学生成绩平均值)的差异?
答案 0 :(得分: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
答案 1 :(得分:0)
试试这个:
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