当前位置: 首页 > 图文教程 > 数据库 > 数据库技巧 > Sql Server、Access数据排名的实现方法(例如:成绩排名)

数据库技巧
SQL中代替Like语句的另一种写法
Sql Server下数据库链接的使用方法
如何取得一个表的所有字段名用逗号分割
使用SQL Mail收发和自动处理邮件中的扩展存储过程简介
MySQL中的mysqldump命令使用详解
SQL 查询语句积累
SQL server 2005的表分区
关于ADOX的相关知识
如何让SQL运行得更快
ACCESS库转SQLSERVER数据库的注意事项
数据库设计技巧[转]
iwms access与sql版的安装与转换
[转载]让SQL运行得更快
[数据库] 通用分页存储过程
Access数据库升级为SQL数据库的注意事项和方法
Win2003系统安装SQL Sever2000后1433端口未开放的解释
SQL SERVER 与ACCESS、EXCEL的数据转换
Access转MS SqlServer的注意事项
数据库的设计方法、规范与技巧
数据库设计技巧奉送了

数据库技巧 中的 Sql Server、Access数据排名的实现方法(例如:成绩排名)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 160 ::
收藏到网摘: n/a

在很多时候,我们需要统计数据的排名情况,最常见的是成绩、投票数等等的。 但是,在SQL SERVER 2005 之前,SQL SERVER 2000 并没有提供这个直接的函数供我们使用,同样 ACCESS 也是如此。

下面我们分2种情况,来写出数据排名的实现过程。测试数据如下:

database rank

排名后的结果如下:

sql server rank
Access

复制代码 代码如下:

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

sqlserver
复制代码 代码如下:

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

对于 SQL SERVER 2005 及更高版本
复制代码 代码如下:

SELECT name, score, RANK() OVER (ORDER BY score DESC) AS [rank], DENSE_RANK() OVER (ORDER BY score DESC) AS [rank1], NTILE(4) OVER(ORDER BY score DESC) AS [rank2] FROM score_rank ORDER BY score DESC;