查询排名 sql
来源:互联网 发布:sql when case 查询 编辑:程序博客网 时间:2024/06/04 18:31
结构为
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
--*/
- sql查询排名问题
- 查询排名 sql
- 查询数据排名情况SQL
- 查询成绩显示出排名的sql
- sql查询排名以及springmvc实现
- MS SQL查询时自动给数据排名:RANK(),DENSE_RANK()
- 一条SQL语句查询出成绩名次排名
- 数据库排名sql,group by 分组查询按照时间最大值
- SQL server中按照某个字段查询排名问题
- 数据库排名sql,group by 分组查询按照时间最大值
- SQL排名
- 排名sql
- 排名SQL
- alexa 排名查询 webservice
- 网站搜索排名查询
- 关于查询排名
- MySql查询排名信息
- mysql查询排名
- c++版贪食蛇————不断更新直到完成
- hdu 1701 水水
- 标准的创建数据库
- MFC窗口最大化&移动窗口位置&获取控件句柄,设置控件大小
- 的规范的后果
- 查询排名 sql
- linux配置java环境变量(详细)
- WordNet词网研究——JWI(Java Wordnet Interface)WordNet Java接口
- byte[] buffer=new byte[1024]
- OK210 第一个WINCE驱动学习
- C# 实现设置系统环境变量设置
- iOS应用开发最佳实践:编写高质量的Objective-C代码
- sim卡操作联系人
- 环境发生的规划费德勒