Sql Server、Access数据排名的实现方法(例如:成绩排名)
<p>但是,在SQL SERVER 2005 之前,SQL SERVER 2000 并没有提供这个直接的函数供我们使用,同样 ACCESS 也是如此。</p>
<p>
下面我们分2种情况,来写出数据排名的实现过程。测试数据如下:</p>
<p>
<img title="Sql Server、Access数据排名的实现方法(例如:成绩排名)" alt="Sql Server、Access数据排名的实现方法(例如:成绩排名)" src="https://zhuji.jb51.net/uploads/img/202305/37a6775499db226c7f142217bb9f19ff.jpg"></p>
<p>
排名后的结果如下:</p>
<p>
<img title="Sql Server、Access数据排名的实现方法(例如:成绩排名)" alt="Sql Server、Access数据排名的实现方法(例如:成绩排名)" src="https://zhuji.jb51.net/uploads/img/202305/11020845910c50bb1278baaccc8b9f59.jpg"><br>
Access</p>
<p class="codetitle">
<span><u>复制代码</u></span> 代码如下:</p>
<p class="codebody">
<br>
select name, score, (select iif(isnull(sum(1)), 1, sum(1) + 1) from score_rank where score > a.score) as rank from score_rank a order by score desc</p>
<p>
<br>
sqlserver</p>
<p class="codetitle">
<span><u>复制代码</u></span> 代码如下:</p>
<p class="codebody">
<br>
select name, score, (select ISNULL(sum(1),0) + 1 from score_rank where score > a.score) as rank from score_rank a order by score desc</p>
<p>
<br>
对于 SQL SERVER 2005 及更高版本</p>
<p class="codetitle">
<span><u>复制代码</u></span> 代码如下:</p>
<p class="codebody">
<br>
SELECT name, score, RANK() OVER (ORDER BY score DESC) AS , DENSE_RANK() OVER (ORDER BY score DESC) AS , NTILE(4) OVER(ORDER BY score DESC) AS FROM score_rank ORDER BY score DESC;</p>
<p>
</p>
頁:
[1]