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

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

先按"成绩"排名, 如果"成绩"同分的, 按"成绩1"减"成绩2"的差排名(差值大的排前)
求某同学的排名
...全文
45 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
nowokcom 2003-12-24
  • 打赏
  • 举报
回复
测试通过. 谢谢.
圣诞快乐
zjcxc 元老 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 行)
--*/
zjcxc 元老 2003-12-24
  • 打赏
  • 举报
回复
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
  • 打赏
  • 举报
回复
按"成绩"排名,是从小到大,还是从大到小?

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧