日期:2014-05-17  浏览次数:20372 次

求一条SQL,计算偏差值
表A:
ID 班级 成绩
1 1班 67
2 1班 45
3 1班 90
4 1班 100
5 2班 12
6 2班 56
7 2班 34
8 2班 86
9 3班 89
10 3班 99
11 3班 100
12 3班 56
13 3班 42

我想查询每个人(ID)的偏差值,公式如下:
偏差值 = ((个人成绩 - 所在班级的平均成绩)/ 所在班级的标准差)*10 + 50

我自己写的SQL,执行时候有错,错误原因我大致是知道的,但是不知道怎么改

SQL code
select ID,班级, ((成绩 - avg(成绩))/POWER(VARIANCE(成绩), 0.5))*10+50
from A
group by 班级


------解决方案--------------------
SQL code

-->try
select ID,班级, ((成绩 - t.平均成绩)/t.标准差)*10+50
from A,(select 班级, avg(成绩) 平均成绩, POWER(VARIANCE(成绩),0.5) 标准差 from @test group by 班级) t
where A.班级=t.班级