24.写出下列每条语句或程序段的功能
假设存在名为AAA的数据库,包括Students(学号 char(8),姓名 varchar(8),年龄 int,专业 varchar(20),入学日期 DateTime)和Score(学号 char(8),课程名 varchar(10),成绩 numeric(5,2))两张表。
(1) SELECT *
FROM Students
WHERE DATEPART(year,入学日期) =DATEPART(year,GETDATE())
((1) 从Students表中查询出所有当年(系统时间)入学的学生记录。)
(2) DECLARE @MyNO CHAR(8)
SET @MyNO='20030001'
IF (SELECT 专业 FROM Students WHERE 学号=@MyNO)='计算机软件'
BEGIN
SELECT AVG(成绩) AS 平均成绩
FROM Score
WHERE 学号=@MyNO
END
ELSE
PRINT '学号为' +@MyNO+'的学生不存在或不属于软件专业'
GO
((2) 首先定义一个名为@MyNo的局部变量,并给它赋初值,如果@MyNo属于计算机软件专业,则显示出平均成绩,否则显示“学号为@MyNo的学生不存在或不属于软件专业”)
(3) declare @a numeric(5,2)
set @a=(select avg(成绩) from score)
select *
from score
where 成绩>=@a
( 从score表中查询出大于等于平均成绩的所有记录。)
(4) declare @a numeric(5,2),@b numeric(5,2)
set @a=(select max(成绩) from score)
set @b=(select min(成绩) from score)
print @a-@b
(求出score表中最高成绩与最低成绩的分数之差。
)
(5) declare @a char(6)
set @a='刘亮'
if(exists(select * from students where 姓名=@a))
print '姓名为'+@a+'的同学存在!'
else
print '姓名为'+@a+'的同学不存在!'
(从students表中查询姓名为@a的值的同学是否存在,根据不同情况显示出相应信息。)
(6) declare @a char(8)
set @a='计算机'
select 计算机专业人数=count(*)
from students
where left(专业,3)=@a
( 从students表中统计出专业名开头为@a的值(即“计算机”)的所有学生人数。)
(sql统计每个系的学生人数7) select year(入学日期) as 入学年份,count(*) as 人数
from students
group by year(入学日期)
(从students表中分组统计出每个年份入学的学生人数。)
(8) select month(入学日期) as 入学月份,count(*) as 人数
from students
group by month(入学日期)
(从students表中分组统计出每个月份入学的学生人数。)
(9) select day(入学日期) as 入学日号,count(*) as 人数
from students
group by day(入学日期)
( 从students表中分组统计出每个日号入学的学生人数。)
答案:(1) 从Students表中查询出所有当年(系统时间)入学的学生记录。
(2) 首先定义一个名为@MyNo的局部变量,并给它赋初值,如果@MyNo属于计算机软件专业,则显示出平均成绩,否则显示“学号为@MyNo的学生不存在或不属于软件专业”。
(3) 从score表中查询出大于等于平均成绩的所有记录。
(4) 求出score表中最高成绩与最低成绩的分数之差。
(5) 从students表中查询姓名为@a的值的同学是否存在,根据不同情况显示出相应信息。
(6) 从students表中统计出专业名开头为@a的值(即“计算机”)的所有学生人数。
(7) 从students表中分组统计出每个年份入学的学生人数。
(8) 从students表中分组统计出每个月份入学的学生人数。
(9) 从students表中分组统计出每个日号入学的学生人数。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论