请教一个存储过程的简单问题

rdcvgt 2004-12-26 10:25:34
数理化三门课程的分数作为三栏,另外加上姓名、学号、名次作为一栏

请问怎么撰写存储过程来计算各学生的名次?(要考虑总分相同的情况,多人占用一个名次)

谢谢~!
...全文
62 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rdcvgt 2004-12-26
  • 打赏
  • 举报
回复
呵呵,多谢多谢
mschen 2004-12-26
  • 打赏
  • 举报
回复
--上边的有点错误!这个可以,经过测试.
create table 成绩表(姓名 varchar(10),学号 int,数学 int,物理 int,化学 int)--建立测试表
--插入数据
insert 成绩表
select 'aa',001,87,89,56
union select 'bb',002,88,78,45
union select 'cc',003,88,88,56
union select 'dd',004,23,45,98
--建立存储过程
create proc proc_score
as
select 姓名,学号,数学+物理+化学 as 总分,名次=(select count(*)+1 from 成绩表 where (数学+物理+化学)>(a.数学+a.物理+a.化学))
from 成绩表 a
order by 名次
go
--执行存储过程
exec proc_score
--结果
/*
姓名 学号 总分 名次
---------- ----------- ----------- -----------
aa 1 232 1
cc 3 232 1
bb 2 211 3
dd 4 166 4

(所影响的行数为 4 行)
*/
mschen 2004-12-26
  • 打赏
  • 举报
回复
--看看这个可以吗?
create proc proc_score
as
select 姓名,学好,数学+物理+化学 as 总分,名次=(select count(*)+1 from 成绩表 where (数学+物理+化学)>a.总分)
from 成绩表 a

34,873

社区成员

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

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