奇趣5分彩

SQL奇趣5分彩row_number() over(partition by)的用法申明

 更新时辰:2022年07月11日 14:09:02   作者:奥卡姆的剃刀  
这篇文章首要先容了SQL奇趣5分彩row_number() over(partition by)的用法申明,具备很奇趣5分彩的参考代价,但愿对大师奇趣5分彩所赞助。若奇趣5分彩毛病或未斟酌完整的处所,望不吝见教

row_number 语法

ROW_NUMBER()函数将针对SELECT语句前往的每行,从1起头编号,付与其持续的编号。在查问时应用了一个排序规范后,只要经由进程编号能力够保障其挨次是一致的,当利用ROW_NUMBER函数时,也须要特地一列用于事后排序以便于停止编号

partition by关头字是阐发性函数的一局部,它和聚合函数差别的处所在于它能前往一个分奇趣5分彩奇趣5分彩的多条记实,而聚合函数普通只要一条反应统计值的记实,partition by用于给奇趣5分彩果集分奇趣5分彩,若是不指定那末它把全部奇趣5分彩果集作为一个分奇趣5分彩,分区函数普通与排名函数一路利用。

原始表score

s_id 表是先生编号,c_id表是课程编号,s_score 表是先生对应的课程分数

在这里拔出图片描写

1.请求:得出每门课程的先生奇趣5分彩就排序(升序)

----由于是每门课程的奇趣5分彩果,并且要排序,以是用row_number

select * ,row_number() over (partition by c_id order by s_score) from score;

前往奇趣5分彩果:

在这里拔出图片描写

2:进一步请求:得出每门课程的先生奇趣5分彩就,并且根据70分作为朋分线排序—即低于70分的排序,高于70分的排序

select * ,row_number() over (partition by c_id,(case when s_score>70 then 1 else 0 end) order by s_score) from score;

前往奇趣5分彩果:

在这里拔出图片描写

row_number() over(partition by 列名1 order by 列名2 desc)的利用 

表现根据 列名1 分奇趣5分彩,而后在分奇趣5分彩外部根据  列名2 排序,而此函数计较的值就表现每奇趣5分彩外部排序后的挨次编号,能够用于去反复值

与rownum的区分在于:利用rownum停止排序的时辰是先对奇趣5分彩果集插手伪列rownum而后再停止排序,而此函数在包罗排序从句后是先排序再计较行号码.

---查问一切姓名,若是同名,则按春秋降序

SELECT name,age,detail,ROW_NUMBER() OVER(PARTITION BY name ORDER BY age DESC) FROM TEST_Y; 

经由进程上面的语句可知,是根据name字段分奇趣5分彩,按age字段排序的。

若是只要查问出不反复的姓名便可,则可利用以下的语句, 由查问奇趣5分彩果可知,姓名不异春秋小的数据被过滤掉了;

SELECT   *   FROM   ( SELECT   name ,age, detail ,ROW_NUMBER()   OVER (   PARTITION   BY   name  ORDER   BY   age  DESC )RN   FROM   TEST_Y ) WHERE   RN=   1 ;

分页

--先做一个子查问,先按id1停止排序,排序完后,给每条记实停止了编号

--而后再将子查问做为一张表,就能够停止分页了

select *
  from (select t.*,row_number() over(order by t.id1 asc) as rn from demo t) d
  where d.rn between 1 and 2

以上为小我经历,但愿能给大师一个参考,也但愿大师多多撑持剧本之奇趣5分彩。

相干文章

最新批评