当前位置: 代码迷 >> Sql Server >> SQL分组语句不熟练,搞排名偶不会解决方法
  详细解决方案

SQL分组语句不熟练,搞排名偶不会解决方法

热度:90   发布时间:2016-04-27 13:07:29.0
SQL分组语句不熟练,搞排名偶不会
一个表里面有四个属性:试卷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
  相关解决方案