SQLServer判断循环

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_45743799/article/details/102778916

使用SQLServer语句对数据进行判断输出或者循环判断输出

不仅Java语言,C语言有判断和循环,SQLServer同样有判断和循环
1. 创建数据表

create table score
(
stuId nvarchar(5) ,
stuSex nchar(2),
chinese int,
english int,
math int
)

2. 在表中添加数据

insert into score values('S2001','男',75,80,90);
insert into score values('S2002','男',76,56,54);
insert into score values('S2003','女',90,92,70);
insert into score values('S2004','女',70,72,80);

3. 判断的使用
***如:***–统计分析本班男生的平均成绩和女生的平均成绩,如果男生的平均成绩高于女生则输出“男生成绩优于女生”,并显示男生第一名的信息。
–否则输出“女生成绩优于男生”,并显示女生第一名的信息。

在这里插入代码片

DECLARE @mScore int
DECLARE @wScore int

–SELECT (chinese+english+math)/3 FROM score WHERE stuSex = ‘男’

SELECT @mScore = AVG((chinese+english+math)/3) FROM score WHERE stuSex = ‘男’

–求女生的平均成绩
SELECT @wScore = AVG((chinese+english+math)/3) FROM score WHERE stuSex = ‘女’

IF(@mScore>@wScore)
BEGIN
PRINT ‘男生成绩优于女生’
–查询出 男生第一名的信息
SELECT top 1 * FROM score WHERE stuSex =‘男’ ORDER BY (chinese+english+math) DESC
END

ELSE
BEGIN
PRINT ‘女生成绩优于男生’
–查询出 女生第一名的信息
SELECT top 1 * FROM score WHERE stuSex =‘女’ ORDER BY (chinese+english+math) DESC
END

4. 循环的使用
***如:***–在 StuScore 表中如果学生的平均成绩没有达到80分,便给每位同学的数学成绩加1分,
–然后再次判断平均成绩是否达到80分,否则继续加分,这样反复加分,直到其平均成绩超过80分。

DECLARE @avg int
SELECT @avg = avg((chinese+english+math)/3) FROM score 
WHILE(@avg<80)
BEGIN
--执行加分操作
UPDATE score set math = math+1 where math <= 100
SELECT @avg = avg((chinese+english+math)/3) FROM score 
END

5. 用判断语句(五分制)显示成绩

SELECT stuId ,chinese FROM score


SELECT stuId ,分数段 = case
when chinese<=19 then '1'
when chinese<=39 then '2'
when chinese<=59 then '3'
when chinese<=79 then '4'
ELSE '5'
END
FROM score 

上述程序已经详细表达了SQLServer判断循环的使用

了解更多关注我呦!!!

猜你喜欢

转载自blog.csdn.net/weixin_45743799/article/details/102778916