--1. row_number 用法 这个函数的功能是为查询出来的每一行记录生成一个序号
select row_number() over(order by stuid) as row_number,* from scorewith t_rowtable
as( select row_number() over(order by stuid) as row_number,*from Score)select * from t_rowtable where row_number>1 and row_number<4 order by stuid--top 分页(比较麻烦)
select * from(select top 2 * from(select top 3 * from Score order by stuID)a order by stuid desc) b order by stuid--2.rank 函数考虑到了over子句中排序字段值相同的情况
select rank() over(order by stuid) as 排序列,* from Score order by stuID--3.dense_rank 函数的功能与rank函数类似,只是在生成序号时是连续的,而rank函数生成的序号有可能不连续。
select dense_rank() over(order by stuid),* from Score order by stuID--4.ntile函数可以对序号进行分组处理。这就相当于将查询出来的记录集放到指定长度的数组中,每一个数组元素存放一定数量的记录。
-- ntile函数为每条记录生成的序号就是这条记录所有的数组元素的索引(从1开始)。也可以将每一个分配记录的数组元素称为“桶”。-- ntile函数有一个参数,用来指定桶数。select ntile(3) over(order by stuid)as bucket,* from Score