使用可變我有2個表: 標記(studentnum,馬克) 學生(SNUM,SNAME)減去由平均同一列的列中的值,而無需在ISQL
如果我做
從Marks加入學生SNum = studentnum中選擇SName,marks-avg(標記)
然後我只返回1行。
是否有辦法將所有學生姓名列表以及學生分數與平均分數(學生分數 - 平均分)的差異都返回給學生,而無需爲平均分配變量?
使用可變我有2個表: 標記(studentnum,馬克) 學生(SNUM,SNAME)減去由平均同一列的列中的值,而無需在ISQL
如果我做
從Marks加入學生SNum = studentnum中選擇SName,marks-avg(標記)
然後我只返回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
不會按studentnum分組找到每個學生的平均分數嗎?不是商標表中整個商標的平均值? – user1509652 2012-07-08 07:21:27
@ user1509652,你是對的,我的回答也是一樣的。我的答案也很容易改變。 – shawnt00 2012-07-08 07:41:36
謝謝!很好的工作 – user1509652 2012-07-08 07:07:41
如果你想要所有學生的平均分數,然後刪除WHERE子句。 – shawnt00 2012-07-08 07:39:26