一个表里面有四个属性:试卷id,学号,成绩,排名
试卷id和学号是主键,排名属性可以不要,如果在用select语句取表数据的时候能顺便带上排名列的话
排名是按照试卷id分类排名的啊,也就是一份试卷为一组,按成绩排名。
麻烦说详细些啊,多谢。
------解决方案--------------------
- SQL code
DECLARE @table TABLE([试卷ID] int,[学号] int,[成绩] INT)INSERT INTO @tableSELECT 1,1,89 UNION ALLSELECT 1,2,90 UNION ALLSELECT 1,3,70 UNION ALLSELECT 1,4,56 UNION ALLSELECT 1,5,56 UNION ALLSELECT 1,6,84 UNION ALLSELECT 2,1,81 UNION ALLSELECT 2,2,86 UNION ALLSELECT 2,3,98 UNION ALLSELECT 2,4,93 UNION ALLSELECT 2,5,89 UNION ALLSELECT 2,6,88 --密集排名SELECT *,[排名]=DENSE_RANK() OVER(PARTITION BY [试卷ID] ORDER BY 成绩) FROM @table/*试卷ID 学号 成绩 排名----------- ----------- ----------- --------------------1 4 56 11 5 56 11 3 70 21 6 84 31 1 89 41 2 90 52 1 81 12 2 86 22 6 88 32 5 89 42 4 93 52 3 98 6(12 行受影响)*/--排名SELECT *,[排名]=RANK() OVER(PARTITION BY [试卷ID] ORDER BY 成绩) FROM @table