博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排名 sql
阅读量:6258 次
发布时间:2019-06-22

本文共 1194 字,大约阅读时间需要 3 分钟。

结构为

user scores
1      80
2     7
3     99
4     58
..
比如我想计算user
=4在此表中的排名应该如何做?
SELECT COUNT* ) FROM user_test WHERE scores >= ( SELECT scores FROM user_test 
WHERE user =4 ) 
--参数说明:
--
sc 表名
--
name 人名
--
mark 分数
--
ord 名次
1、并列,有空档,名次是不连续的(有两个第二名,接下来的就是第四名)。
update sc set ord=(select count(*)+1 from sc B where B.mark>sc.mark)
说明:其实就是求出分数比他多的人数,再加上1。
2、并列,无空档,名次总是连续的
update sc set ord=(select count(*from (select distinct mark from sc) as distmark where distmark.mark >=sc.mark)
说明:
select distinct mark from sc 是求出不重复的分数,然后看你的分数排在哪个位置。

 

--1. 名次生成方式1,Score重复时合并名次

SELECT *,Place=(SELECT COUNT(DISTINCT Score) FROM tb WHERE Score>=a.Score)
FROM tb a
ORDER BY Place
/*--结果
Name       Score        Place 
---------------- ----------------- ----------- 
aa         99.00        1
ee         78.00        2
gg         78.00        2
dd         77.00        3
ff         76.00        4
bb         56.00        5
cc         56.00        5
ff         50.00        6
--
*/
--2. 名次生成方式2,Score重复时保留名次空缺
SELECT *,Place=(SELECT COUNT(Score) FROM tb WHERE Score>a.Score)+1
FROM tb a
ORDER BY Place
/*--结果
Name       Score        Place 
--------------- ----------------- ----------- 
aa         99.00        1
ee         78.00        2
gg         78.00        2
dd         77.00        4
ff         76.00        5
bb         56.00        6
cc         56.00        6
ff         50.00        8
--
*/
 

    本文转自曾祥展博客园博客,原文链接:http://www.cnblogs.com/zengxiangzhan/archive/2009/09/23/1572290.html,如需转载请自行联系原作者

你可能感兴趣的文章
我的友情链接
查看>>
CentOS5.9下编译安装MySQL5.0.16
查看>>
网络推广与网络营销的区别
查看>>
免费企业邮箱真的不需要成本吗?
查看>>
java 组合模式
查看>>
JSP中文乱码解决方案
查看>>
Metasploit 的使用方法概述
查看>>
shell 脚本之 Function 功能的使用
查看>>
[Windows 8小技巧]如何让Windows 8不显示锁屏画面
查看>>
3月15日 打卡
查看>>
apache 日志分析工具(webalizer、awstats)的使用
查看>>
我的友情链接
查看>>
sql server数据库备份语句
查看>>
oracle 安装过程
查看>>
Tcpdump使用
查看>>
使用gitlab实现上线自动化
查看>>
centos6.5上安装ncdu
查看>>
Java中Overload和Override的区别
查看>>
基于VMware vSphere 5.0的服务器虚拟化实践(3)
查看>>
Redhat Linux NFS配置
查看>>