SQLSERVER 不并列连续排序,并列不连续排名,并列连续排名,分组排名

CREATE TABLE #temp_student_result
    (
      student_name NVARCHAR(20) ,
      class_name NVARCHAR(20) ,
      score FLOAT
    );
    
INSERT  INTO #temp_student_result
        ( student_name, class_name, score )
VALUES  ( N'张三1', -- student_name - nvarchar(20)
          N'一班', -- class_name - nvarchar(20)
          15  -- score - float
          );
              
INSERT  INTO #temp_student_result
        ( student_name, class_name, score )
VALUES  ( N'张三2', -- student_name - nvarchar(20)
          N'一班', -- class_name - nvarchar(20)
          80  -- score - float
          );
              
INSERT  INTO #temp_student_result
        ( student_name, class_name, score )
VALUES  ( N'张三3', -- student_name - nvarchar(20)
          N'一班', -- class_name - nvarchar(20)
          60  -- score - float
          );
              
INSERT  INTO #temp_student_result
        ( student_name, class_name, score )
VALUES  ( N'张三4', -- student_name - nvarchar(20)
          N'一班', -- class_name - nvarchar(20)
          100  -- score - float
          );
              
INSERT  INTO #temp_student_result
        ( student_name, class_name, score )
VALUES  ( N'张三5', -- student_name - nvarchar(20)
          N'一班', -- class_name - nvarchar(20)
          100  -- score - float
          );
              
INSERT  INTO #temp_student_result
        ( student_name, class_name, score )
VALUES  ( N'李四1', -- student_name - nvarchar(20)
          N'二班', -- class_name - nvarchar(20)
          15  -- score - float
          );
              
INSERT  INTO #temp_student_result
        ( student_name, class_name, score )
VALUES  ( N'李四2', -- student_name - nvarchar(20)
          N'二班', -- class_name - nvarchar(20)
          80  -- score - float
          );
              
INSERT  INTO #temp_student_result
        ( student_name, class_name, score )
VALUES  ( N'李四3', -- student_name - nvarchar(20)
          N'二班', -- class_name - nvarchar(20)
          60  -- score - float
          );
              
INSERT  INTO #temp_student_result
        ( student_name, class_name, score )
VALUES  ( N'李四4', -- student_name - nvarchar(20)
          N'二班', -- class_name - nvarchar(20)
          86  -- score - float
          );
              
INSERT  INTO #temp_student_result
        ( student_name, class_name, score )
VALUES  ( N'李四5', -- student_name - nvarchar(20)
          N'二班', -- class_name - nvarchar(20)
          95  -- score - float
          );
          
 --年级连续不并列排序
SELECT  * ,
        ROW_NUMBER() OVER ( ORDER BY score DESC ) [rank]
FROM    #temp_student_result;

 --年级并列不连续排名         
SELECT  * ,
        RANK() OVER ( ORDER BY score DESC ) [rank]
FROM    #temp_student_result;
  
--年级并列连续排名         
SELECT  * ,
        DENSE_RANK() OVER ( ORDER BY score DESC ) [rank]
FROM    #temp_student_result; 
          
          
--班级顺序排名(分组排序)
SELECT  * ,
        ROW_NUMBER() OVER ( PARTITION BY class_name ORDER BY score DESC ) [rank]
FROM    #temp_student_result;            
          
DROP TABLE #temp_student_result;

1,年级连续不并列排序

 --年级连续不并列排序
SELECT  * ,
        ROW_NUMBER() OVER ( ORDER BY score DESC ) [rank]
FROM    #temp_student_result;

2,年级并列不连续排名

--年级并列不连续排名         
SELECT  * ,
        RANK() OVER ( ORDER BY score DESC ) [rank]
FROM    #temp_student_result;

3,年级并列连续排名

--年级并列连续排名         
SELECT  * ,
        DENSE_RANK() OVER ( ORDER BY score DESC ) [rank]
FROM    #temp_student_result; 

 4,班级顺序排名(分组排序)

--班级顺序排名(分组排序)
SELECT  * ,
        ROW_NUMBER() OVER ( PARTITION BY class_name ORDER BY score DESC ) [rank]
FROM    #temp_student_result;  

原文地址:https://www.cnblogs.com/YoungHeart/p/15157424.html