日期:2014-05-18 浏览次数:21156 次
编写一个存储过程,包含一个输入参数,
指定阶乘最大值,包含一个输出参数,返回阶乘的值。
create proc pro @n int,@sum int output
as
declare @index int
set @index=1
set @sum=1
while(@index<=@n)
begin
set @sum=@sum*@index
set @index=@index+1
end
declare @sum int
exec pro 10,@sum output
select @sum as 结果为
4、编写一个存储过程,统计两个输入参数间能被整除
的整数个数及这些整数的和,两个输入参数,两个输
出参数。
create proc pron @n int,@m int,@sum int output,@total int output
as
set @sum=0
set @total=0
while (@n<=@m)
begin
if @n%13=0
begin
set @sum=@sum+@n
set @total=@total+1
set @n=@n+1
end
else
set @n=@n+1
end
declare @sum int,@total int
exec pron 5,1000,@sum output,@total output
select @sum as 总和,@total as 总个数
参考
------解决方案--------------------
学生挂科率,和各个科目挂科率。表达式能贴出来。
------解决方案--------------------
--如果是查询
--学生考试挂科率
select m.id , m.student_name , cast(isnull(n.cnt, 0)*100.0 / m.cnt as decimal(18,2)) [挂科率] from
(select id , student_name , count(1) cnt from test_student group by id , student_name ) m
left join
(select id , student_name , count(1) cnt from test_student where core < 60 group by id , student_name ) n
on m.id = n.id
--各个科目的挂科率
select m.course_name , cast(isnull(n.cnt, 0)*100.0 / m.cnt as decimal(18,2)) [挂科率] from
(select course_name , count(1) cnt from test_student group by course_name) m
left join
(select course_name , count(1) cnt from test_student where core < 60 group by course_name) n
on m.course_name = n.course_name
--如果是要存储过程
--学生考试挂科率
create procedure my_proc1 as
begin
select m.id , m.student_name , cast(isnull(n.cnt, 0)*100.0 / m.cnt as decimal(18,2)) [挂科率] from
(select id , student_name , count(1) cnt from test_student group by id , student_name ) m
left join
(select id , student_name , count(1) cnt from test_student where core < 60 group by id , student_name ) n
on m.id = n.id
end
--各个科目的挂科率
crete procedure my_proc2 as
begin
select m.course_name , cast(isnull(n.cnt, 0)*100.0 / m.cnt as decimal(18,2)) [挂科率] from
(select course_name , count(1) cnt from test_student group by course_name) m
left join
(select course_name , count(1) cnt from test_student where core < 60 group by course_name) n
on m.course_name = n.course_name
end