问题:
统计分析本班男生的平均成绩和女生的平均成绩,如果男生的平均成绩高于女生则输出“男生成绩优于女生”,并显示男生第一名的信息。否则输出“女生成绩优于男生”
,并显示女生第一名的信息。
题目:在 StuScore 表中如果学生的平均成绩没有达到80分,便给每位同学的数学成绩加1分,然后再次判断平均成绩是否达到80分,否则继续加分,这样反复加分,直到其平均成绩超过80分。
思路:
第一步,计算 StuScore 表中学生的平均成绩。
第二步,如果平均成绩没有达到80分,执行加分操作。
第三步,循环判断。
<pre name="code" class="sql">CREATE DATABASE Students
GO
--使用数据库
USE Students
GO
--学生信息表
CREATE TABLE StuInfo
(
StuNo char(5) primary key,
StuName varchar(20),
StuSex char(2),
StuAge int,
StuSeat int
)
GO
--学生成绩表
CREATE TABLE StuScore
(
StuID varchar(10) primary key,
StuSex char(2),
Chinese int,
English int,
Math int
)
GO
--添加数据
INSERT INTO StuInfo (StuNo, StuName, StuSex, StuAge, StuSeat)
SELECT 'S2001', '张三丰', '男', 17, 1 UNION
SELECT 'S2002', '张无忌', '男', 15, 2 UNION
SELECT 'S2003', '梅超风', '男', 20, 3
INSERT INTO StuScore (StuID, StuSex, Chinese, English, Math)
SELECT 'S2001', '男', 75, 80, 90 UNION
SELECT 'S2002', '男', 76, 56, 54 UNION
SELECT 'S2003', '女', 90, 92, 70 UNION
SELECT 'S2004', '女', 70, 72, 80
SELECT * FROM Stuinfo
SELECT * FROM StuScore
--定义一个学生的座位编号的变量
declare @Seat int
---使用select将查询的结果赋值给@Seat
select @Seat=StuSeat from StuInfo where StuName='张无忌'
--打印座位号
print @Seat
--查询出座位前后的同
select * from StuInfo where (StuSeat=@Seat-1) or (StuSeat=@Seat+1)
declare @maleAvgScore float
declare @femaleAvgScore float
select @maleAvgScore=avg((Chinese+English+Math)/3) from StuScore where StuSex='男'
select @femaleAvgScore=avg((Chinese+English+Math)/3) from StuScore where StuSex='女'
print '男生平均成绩:'+convert(varchar(10),@maleAvgScore)
print '女生平均成绩:'+convert(varchar(10),@femaleAvgScore)
if(@maleAvgScore>@femaleAvgScore)
begin
print '男生成绩优于女生'
select top 1*from StuScore where StuSex='男' order by (chinese+english+math) desc
end
else
begin
print '女生成绩优于男生'
select top 1*from StuScore where StuSex='女' order by (chinese+english+math) desc
end
---第一步,计算 StuScore 表中学生的平均成绩。
--第二步,如果平均成绩没有达到80分,执行加分操作。
--第三步,循环判断。declare @score float
select @score=avg((Chinese+English+Math)/3) from StuScore
print '此时的成绩是:'+convert(varchar(10), @score)
while (@score<80)
begin
update StuScore set Math=Math+1 where Math<100
select @score=avg((Chinese+English+Math)/3) from StuScore
end
---查询成绩
SELECT * FROM StuScore