Sql Server、Access数据排名的实现方法(例如:成绩排名)
作者:
在很多时候,我们需要统计数据的排名情况,最常见的是成绩、投票数等等的。
但是,在SQL SERVER 2005 之前,SQL SERVER 2000 并没有提供这个直接的函数供我们使用,同样 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;
下面我们分2种情况,来写出数据排名的实现过程。测试数据如下:
排名后的结果如下:
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;
您可能感兴趣的文章:
- SQL Server中的数据复制到的Access中的函数
- Access转Sql Server问题 实例说明
- SQLServer与Access常用SQL函数区别
- SQL 随机查询 包括(sqlserver,mysql,access等)
- 在ACCESS和SQL Server下Like 日期类型查询区别
- Access和SQL Server里面的SQL语句的不同之处
- asp.net下Oracle,SQL Server,Access万能数据库通用类
- SQL SERVER 与ACCESS、EXCEL的数据转换方法分享
- 将Access数据库中数据导入到SQL Server中的详细方法实例
- 八步解决ACCESS自动编号问题(将SQL SERVER 2000数据库,转换为ACCESS数据库)
- 将ACCESS数据库迁移到SQLSERVER数据库两种方法(图文详解)
- sqlserver,sqlite,access数据库链接字符串整理
- 自己动手把ACCESS转换到SQLSERVER的方法
- Access 导入到SQL Server 2005的方法小结
- JavaScript使用ActiveXObject访问Access和SQL Server数据库
- SQL Server数据复制到的Access两步走