本文将详细解释sql server排名函数DENSE _ RANK的用法。这篇文章的内容质量很高,所以边肖会分享给大家参考。希望你看完这篇文章后有所了解。
一、需求
RoW_NUMBER()应该是之前sql server使用最多的排名函数。我通常使用ROW_NUMBER() CTE来实现分页。今天逛公园,看到另外一个内置排名功能还不错。我顺便想到一个要求。你可以先花一分钟想想怎么实现。
要求很简单:询问前五名学生的信息。
示例:
因为分数可以平手,前五名可能不止一个。示例:
测试数据:
声明@ ttable(白痴,学名nvarchar (15),分数int)插入@ tselect 1,99unionallselect2,“五儿”,99unionallselect3,“张三”,99unionallselect4,“李四”,8 Union All selecti5,“王武”,97unionallselect6,“赵6”,96unionallselect7,“天齐”,95unionallselect8,“吉8”,94unionallselect9,“秋9”,93unionallselect10,“林X”,92
我的想法是:既然可能会有平局,那就用DISTINCT找到前五名的分数。好的,代码如下:
选择t1。*来自@ tt1 join(从@ toderbyscoredesc中选择distinctto 5 score)t2on t1。得分=t2。分数看起来还是和上面的要求不一样,不用排序,我们当然可以在程序中处理,这不是问题。
二、自己实现
事实上,sql server内置了这样一个功能,可以帮助我们轻松实现,ok,并直接编码:
;在(orderbyScoredesc)等级上选择密集等级,从@t中选择*从三、使用内置排名函数 DENSE_RANK排名6
还有一个类似于DENSE_RANK的RANK函数,但是RANK函数不是有序的,而是按照序数排序的。有点绕道。只需将上面的函数改为RANK()。
sql server排名函数DENSE _ RANK的用法是什么?我在这里分享一下。我希望
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/127858.html