为了账号安全,请及时绑定邮箱和手机立即绑定

[sql] 统计与上一次考试成绩的分差

[sql] 统计与上一次考试成绩的分差

C#
互换的青春 2018-12-13 05:06:33
系统中提出新的需求,需求分析计算考生与上次考试成绩的分差,判断成绩提升是否过大:数据如下:    ID         Name    Score     Date340321198611285950   吴赞赞   73.10   20080415340321198611285950   吴赞赞   70.00   20080617340321198611285950   吴赞赞   77.25   20080813340321198611285950   吴赞赞   74.95   20090216340321198611285950   吴赞赞   77.65   20090401340321198611285950   吴赞赞   75.70   20090907同一个ID在不同时间进行了多次考试,假如查询条件查询出来的结果为20090401的这条记录,要求计算出与上一次考试成绩(也就是20090216这次)的分差.
查看完整描述

2 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

先按照日期排序,然后通过连接或者子查询,查询两次成绩的差,然后做统计~

查看完整回答
反对 回复 2018-12-18
?
largeQ

TA贡献2039条经验 获得超7个赞

直译:

declare @scr decimal(18,2)//当前分数
declare @preScr decimal(18,2)//上一次分数
declare @rn int//当前分数记录行数
set @scr = 0
set @preScr = 0

set @rn = 0
select @scr = isnull(Score,0),@rn=isnull(rn,0) from (select Score,row_number() over(order by Date desc) as rn  from tb  where Date = 20090401) as a
select @preScr = isnull(Score,0) from (select Score,row_number() over(order by Date desc) as rn  from tb) as b where b.rn = @rn + 1

select @scr - @preScr


查看完整回答
反对 回复 2018-12-18
  • 2 回答
  • 0 关注
  • 833 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信