导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

如何排名? (平安夜在线等待)

nowokcom 2003-12-24 06:38:21
表名:test
字段:
姓名, 成绩, 成绩1, 成绩2
数据:
张一, 90, 100, 40
张二, 80, 80, 50
张三, 85, 100, 40
张四, 85, 100, 50

先按"成绩"排名, 如果"成绩"同分的, 按"成绩1"减"成绩2"的差排名(差值大的排前)
求某同学的排名
...全文
4 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
nowokcom 2003-12-24
测试通过. 谢谢.
圣诞快乐
回复
--测试数据
declare @t table(姓名 varchar(10),成绩 int,成绩1 int,成绩2 int)
insert into @t
select '张一',90,100,40
union all select '张二',80,80,50
union all select '张三',85,100,40
union all select '张四',85,100,50

--查询
select 姓名
,排名=(select sum(1) from @t where 成绩>=a.成绩 and (成绩1-成绩2)>=(a.成绩1-a.成绩2))
from @t a
order by 成绩 desc,成绩1-成绩2 desc


/*--测试结果
姓名 排名
---------- -----------
张一 1
张三 2
张四 3
张二 4

(所影响的行数为 4 行)
--*/
回复
select 姓名,排名=(select sum(1) from @t where 成绩>=a.成绩 and (成绩1-成绩2)>=(a.成绩1-a.成绩2))
from 表 a
order by 成绩 desc,成绩1-成绩2 desc
回复
nowokcom 2003-12-24
TO: Rotaxe(程序员)

我希望使用一条语句, 返回结果就是某同学的排名
回复
Rotaxe 2003-12-24
select * from test order by 成绩 desc, (成绩1- 成绩2) desc
回复
nowokcom 2003-12-24
字段:
姓名, 成绩, 成绩1, 成绩2
数据:
张一, 90, 100, 40
张二, 80, 80, 50
张三, 85, 100, 40
张四, 85, 100, 50


排名情况:
第一: 张一
第二: 张三
第三: 张四
第四: 张二
回复
sdhdy 2003-12-24
如果张三和张四,分数都一样,那么他们是第二名,张二是第3名还是第4名?
回复
nowokcom 2003-12-24
"成绩"高分者排前
"成绩"同分的, 按"成绩1"减"成绩2"的差排名(差值大的排前)
回复
sdhdy 2003-12-24
按"成绩"排名,是从小到大,还是从大到小?
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告