2013-01-19 64 views
0

这是我的表添加列获得总和排名总

student_numbers

ROLL_NO NAME CLASS HINDI MATHS SCIENCE 
2 amit 11 91 91 81 
3 anirudh 11 88 87 81 
4 akash 11 82 81 85 
5 pratik 10 81 99 98 
7 rekha 10 79 97 82 
6 neha 10 89 91 90 
8 kamal 10 66 68 69 
1 ankit 11 97 98 87 

我想最后三列,排名加到这个总按类划分

这是什么我试过

select roll_no,name,class,total, 
rank() over (partition by class order by total desc) as rank 
from student_numbers,(select hindi+maths+science total from student_numbers) 
; 

但这是显示一个非常大的表,重复的学生名称有不同的总数。

+2

试着用更有意义的东西代替“不能正常工作”。 –

回答

2

我不完全确定你要完成什么 - 按班级排列最高分数?如果是这样,这样的事情应该工作:

SELECT SN.Roll_No, 
    SN.Class, 
    SN2.Total, 
    RANK() OVER (PARTITION BY SN.Class ORDER BY SN2.Total DESC) as rank 
FROM Student_Numbers SN 
JOIN (
SELECT 
    Roll_no, hindi+maths+science as Total 
FROM Student_Numbers 
) SN2 ON SN.Roll_No = SN2.Roll_No 

这里是SQL Fiddle

祝你好运。