首页 > 数据库 >sql row_number(),rank(),row_number()的区别

sql row_number(),rank(),row_number()的区别

时间:2023-08-16 18:13:53浏览次数:40  
标签:相同 记录 number rank 排序 row

第一个,row_nubmer(),这个排序函数的特点是相同数据,先查出的排名在前,没有重复值。像我们这里呢sal相同,先查出来的数据的rank排名优先。如下图:
partition by 相当于分组查询


第二个,rank()函数,是跳跃排序,相同数据(这里为sal列相同)排名相同,比如并列第1,则两行数据(这里为rank列)都标为1,下一位将是第3名.中间的2被直接跳过了。排名存在重复值。

第三个,dense_rank(),这个是连续排序的,比如两条并列第1,则两行数据(这里为rank列)都标为1,下一个排名将是第2名。

总结一下:
row_numer():按查出的记录数前后排序,序号不重复。即第1条记录序号为1,第2条记录序号2,第3条记录序号为3(不考虑3条记录的排序字段是否重复)。
rank():跳跃排序,排序字段值相同的序号相同。例如3条记录中前2条排序字段值相同,第3条不同,则前3条记录的排序号为1,1,3。
dense_rank():连续排序。例如前4条记录中,1和2的排序字段值相同,3和4的排序字段值相同,则4条记录的排序号为1,1,2,2。

标签:相同,记录,number,rank,排序,row
From: https://www.cnblogs.com/LLW521/p/17635844.html

相关文章

  • 排名函数rank、dense_rank、row_number
    rank():返回一个连续的排名值,相同的值将具有相同的排名,可能会有空缺。如果存在两个相同的值,则下一个排名与当前值的排名相同,并且下一个排名将相应地增加。使用场景:当需要按照某个特定的列对数据进行排序,但不需要为相同值分配连续的排名时,可以使用rank()函数。 dense_rank():返回......
  • borrow cost, the funding spread and the tax adjustment
    http://www.wilmott.com/messageview.cfm?catid=38&threadid=44884NicoLondonJuniorMemberPosts:15Joined:Feb2005WedJan10,0711:25AMHiall,IreadinanarticlethattheAssetSwapSpreadcouldbedefinedasthesumofthreecomponents:the......
  • Found a misplaced row,分区表修复MYSQL
    在MySQL中,分区表的数据被分隔到不同的表空间中,但仍被视为单个表。在处理大量数据集的某些情况下,分区可能是一种有用的方法。在分区表中删除庞大的数据集可以加快速度,但是如果处理不当,它可能会把数据放在表的不对应的位置中。测试环境:mysql8.0.30建表master[localhost:22031]{msa......
  • 【刷题笔记】17. Letter Combinations of a Phone Number
    题目Givenastringcontainingdigitsfrom 2-9 inclusive,returnallpossiblelettercombinationsthatthenumbercouldrepresent.Amappingofdigittoletters(justlikeonthetelephonebuttons)isgivenbelow.Notethat1doesnotmaptoanyletters.Ex......
  • 让Webbrowser、CDHtmlDialog中的控件显示为系统主题样式
    方法1:在HTML文件里加上如下代码<METAHTTP-EQUIV="MSThemeCompatible"CONTENT="Yes">方法3:在以CDHtmlDialog类为基类的头文件中加入如下代码(推荐)classCWebBrowserThemeDlg:publicCDHtmlDialog{STDMETHOD(GetHostInfo)(DOCHOSTUIINFO*pInfo){pInfo->dwFlags|......
  • mysql Error 1264: Out of range value for column 'balance' at row 1
    报错原因:值超出列的范围可能原因:原因1:值超出其可输入的范围。解决方法:设置的为INT,可以把列的值改为BIGINT,或者改成其他数据类型。原因2:新版本的MySQL对字段的严格检查。解决方法:修改my.ini,将sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"......
  • The MySQL server is running with the LOCK_WRITE_GROWTH option so it cannot execu
    然后百度参考:TheMySQLserverisrunningwiththeLOCK_WRITE_GROWTHoptionsoitcannotexecutethisstatement_冰尘s1的博客-CSDN博客mysql报错TheMySQLserverisrunningwiththeLOCK_WRITE_GROWTHoptionsoitcannotexecutethisstatem_言默夜雨的博客-CSDN博客......
  • 无涯教程-Perl - getprotobynumber函数
    描述此函数在标量context中将协议NUMBER转换为其对应的名称,在列表context中将其名称和相关信息转换为:($name,$aliases,$protocol_number)。语法以下是此函数的简单语法-getprotobynumberNUMBER返回值此函数针对错误返回undef,否则返回标量context中的协议编号,并在列......
  • SQL中fetch_array()和fetch_row()的区别
    相同点:两个的作用都是把查询结果的第一行返回到一个数组中。不同点:fetch_row()是通过数字索引取值。$res=mysqli_query($con,$sql);//返回资源$arr=mysqli_fetch_row($res);//查询的第一行结果赋值给$arrprint_r($arr);print_r($arr[0]);fetch_arroc()是通过关键字......
  • Android开发 Jetpack compose LazyColumn 与 LazyRow、LazyVerticalGrid、LazyHorizon
    前言  此篇博客讲解LazyColumn与LazyRow、LazyVerticalGrid、LazyHorizontalGrid,在compose里LazyColumn与LazyRow与是用来延迟加载数据的,它对标原来xml里的ListView与RecyclerView。LazyColumn纵向列表效果图代码@ComposablefunAPage(){vallistData=remembe......