(十六)排序函数

     大家好,今天给大家分享下SQL Server相关知识,本教程内容全部由本人亲测有效才放出来,网友们可以自己在本地自行练习。写此教程的目的也是希望可以加深自己对数据库操作语句的理解,同时也帮助到初学者,这里主要以代码的形式帮助大家动手练习,全文没有过多言语,也是为了简化大家对文字阅读的繁琐,最后希望能帮助到大家,喜欢就点个赞+关注,欢迎一起学习交流! 

/*排序在很多地方需要用到,需要对查询结果进行排序并且给出序号。比如:

   1、 对某张表进行排序,序号需要递增不重复的

   2、 对学生的成绩进行排序,得出名次,名次可以并列,但名次的序号是连续递增的

   3、 在某些排序的情况下,需要跳空序号,虽然是并列*/
     
--row_number函数
--根据排序子句给出递增连续序号
--按照名称排序的顺序递增
select s.id,s.name,cid,c.name,row_number() over(order by c.name) as number from studentBB s,classes c where cid=c.id;

--rank函数函数
--根据排序子句给出递增的序号,但是存在并列并且跳空
--顺序递增
select id, name, rank() over(order by cid) as rank from studentB;
 
--跳过相同递增
select s.id, s.name, cid, c.name, rank() over(order by c.name) as rank 
from studentB s, classes c where cid = c.id;
 

--dense_rank函数
--根据排序子句给出递增的序号,但是存在并列不跳空
--不跳过,直接递增
select s.id, s.name, cid, c.name, dense_rank() over(order by c.name) as dense 
from studentB s, classes c where cid = c.id;
 
--partition by分组子句
--可以完成对分组的数据进行增加排序,partition by可以与以上三个函数联合使用。
--利用partition by按照班级名称分组,学生id排序
select s.id, s.name, cid, c.name, row_number() over(partition by c.name order by s.id) as rank 
from studentB s, classes c where cid = c.id;
 
select s.id, s.name, cid, c.name, rank() over(partition by c.name order by s.id) as rank 
from studentB s, classes c where cid = c.id;
 
select s.id, s.name, cid, c.name, dense_rank() over(partition by c.name order by s.id) as rank 
from studentB s, classes c where cid = c.id;
 

--ntile平均排序函数
--将要排序的数据进行平分,然后按照等分排序。ntile中的参数代表分成多少等分。

select s.id, s.name, cid, c.name, 
ntile(5) over(order by c.name) as ntile 
from studentB s, classes c where cid = c.id;
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code_6o1

感谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值