当前位置: 代码迷 >> SQL >> SQL Server中使用存储过程实现简略的平均分值功能
  详细解决方案

SQL Server中使用存储过程实现简略的平均分值功能

热度:342   发布时间:2016-05-05 09:35:27.0
SQL Server中使用存储过程实现简单的平均分值功能

在抽题的时候很容易碰到这样子的一个情况:50道题共100,也就是每道题2分,若是手动一个一个填不得累死啊。我就碰到这样子的一个问题了。于是就写了这个简单的存储过程来做这个事儿,执行过后大部分题目的分值都搞定了,小部分的手调+小调即OK。

?

简单思路和业务:

1、根据试卷总分和题目总量计算平均分数(整数);

2、获取所有题目的总分;

3、用试卷的总分减去题目的总分,得到的差值追加到最后一道题目中。

?

实现过程如下:

ALTER PROCEDURE avgScore 	@id int --试卷序号ASBEGIN		SET NOCOUNT ON;	--1、校验试卷序号不能为空	if(@id is null or @id<=0)	begin		raiserror('必须提供试卷信息',16,1);		return ;	end	--2、获取当前试卷的分数	declare @field6 int;--考试总分	declare @count int;--当前试卷题目总数	declare @avg int;--平均数	declare @sum int;--总分,各个题目的分数之和,可能<=总分	select @field6=field6 from table88 where [email protected];	select @count = count(field1) from table89 where [email protected];	if(@field6>0 and @count>0)--两个都有值	begin		set @avg = @[email protected];--获取平均值		--将分值分不到各个题目当中去		update table89 set [email protected] where [email protected];		set @sum = @[email protected];		set @sum = @[email protected];--获取两者之间的差值		--更新最后一道题目的分数,也就是将所有剩下的分数给最后一道题		update table89 set field11=isnull(field11,0)[email protected] where field1=(select top 1 field1 from table89 where [email protected] order by field1 desc);	endEND

?

  相关解决方案