GO if object_id('t_ntile','U') is not null drop table t_ntile; GO create table t_ntile ( id int unique not null, categoryId int not null, name nvarchar(20) ) go INSERT INTO t_ntile VALUES(1,1,'A') INSERT INTO t_ntile VALUES(2,4,'B') INSERT INTO t_ntile VALUES(3,2,'C') INSERT INTO t_ntile VALUES(4,1,'D') INSERT INTO t_ntile VALUES(5,3,'E') INSERT INTO t_ntile VALUES(6,3,'F') INSERT INTO t_ntile VALUES(7,2,'G') INSERT INTO t_ntile VALUES(8,2,'H') INSERT INTO t_ntile VALUES(9,2,'I') Go 查询语句如下:
SELECT id,categoryId,name ,'ntile value' = NTILE(3) OVER(PARTITION BY categoryId ORDER BY categoryId) FROM t_ntile
if object_id('student_class_grade','U') is not null drop table student_class_grade; GO create table student_class_grade ( student_id int, --学生id class_no int, --班级编号 grade int --成绩 ); GO INSERT INTO student_class_grade VALUES(1,1,90); INSERT INTO student_class_grade VALUES(2,1,85); INSERT INTO student_class_grade VALUES(3,1,80); INSERT INTO student_class_grade VALUES(4,1,80); INSERT INTO student_class_grade VALUES(5,1,90); INSERT INTO student_class_grade VALUES(6,1,75); INSERT INTO student_class_grade VALUES(7,1,89); INSERT INTO student_class_grade VALUES(11,2,90); INSERT INTO student_class_grade VALUES(12,2,85); INSERT INTO student_class_grade VALUES(13,2,80); INSERT INTO student_class_grade VALUES(14,2,80); INSERT INTO student_class_grade VALUES(15,2,90); INSERT INTO student_class_grade VALUES(16,2,75); INSERT INTO student_class_grade VALUES(17,2,89); GO --显示各个班级学生的成绩排名 SELECT student_id ,class_no,grade ,'名次' = RANK() OVER(PARTITION BY class_no ORDER BY grade desc) FROM student_class_grade GO SELECT student_id ,class_no,grade ,'名次' = DENSE_RANK() OVER(PARTITION BY class_no ORDER BY grade desc) FROM student_class_grade
WITH CTE_rn (student_id,class_no,grade,rn) AS( SELECT student_id,class_no,grade,rn = ROW_NUMBER() OVER(ORDER BY student_id ASC) FROM student_class_grade WHERE 0=0 --可以在此处加一些过滤条件,这样下面的分页的sql中就都不需要加条件了 ) --获得第-10条的数据 SELECT student_id,class_no,grade FROM CTE_rn WHERE rn BETWEEN 6 AND 10; SELECT totalCn = COUNT(*) FROM student_class_grade WHERE 0=0