在不使用ISQL中的变量的情况下,通过相同列的平均值减去列中的值

时间:2012-07-08 06:37:12

标签: average isql

我有2张桌子: 标记(studentnum,marks) 学生(SNum,SName)

如果我这样做

选择SName,mark-avg(marks)from Marks join Student on SNum = studentnum

然后我只返回1行。

有没有办法在不指定平均变量的情况下返回所有学生姓名列表以及学生成绩和平均成绩(学生成绩平均值)的差异?

2 个答案:

答案 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