SQL语句|PTA题目集

R10-36 基于视图StuView查询。

作者 李翔坤

单位 大连东软信息学院

从上题创建的视图StuView中查询年龄高于18岁的学生有哪些。

提示:请使用SELECT语句作答。

StuView 视图结构:

create view StuView(No, Name, Age)
as select Sno, sname, year(now())-year(birthdate) from Student;

StuView 视图数据样例

StuView视图:

图片.png

输出样例:

图片.png

select No,Name,Age
from StuView
where Age>18;

 R10-37 创建分组统计视图。

作者 李翔坤

单位 大连东软信息学院

创建每个专业学生修课信息的视图PerView,包括每个专业的专业名称、修课的学生人数、平均成绩。

表结构:

create table Student(
  sno char(8)  primary key,
  sname varchar(10) not null,
  gender char(2) check(gender='男' or gender='女'),
  birthdate  date,
  major varchar(20)  default '软件工程'
  );

create table SC(  
  scid  int auto_increment  primary key,
  sno char(8)   references Student(sno),
  cno char(10)  references Course(cno),
  tno char(15)  references Teacher(tno),
  grade int check(grade>=0 and grade<=100),
  gpoint  decimal(2,1),   
  memo  text(100)  
  );

表样例

Student表:

snosnamegenderbirthdatemajor
21012101李勇2005-10-20计算机科学
21012102刘晨2006-5-5计算机科学
21012103王晓敏2005-10-6计算机科学
21021101李佳睿2006-3-30软件工程
21021102吴宾2005-9-21软件工程
21021103张海2005-10-20软件工程
21031101钱晓萍2006-6-1网络工程
21031102王大力2005-11-15网络工程
21041101于洋2006-3-15数据科学
21041102郭霖2006-3-2数据科学

SC表:

scidsnocnotnogradegpointmemo
null21012101c01t200306m1213290nullnull
null21012101c02t200703m1221886nullnull
null21012101c03t200703m12218nullnull缺考
null21012102c02t200703m1221878nullnull
null21012102c03t200703m1221866nullnull
null21021102c01t200306m1213282nullnull
null21021102c02t200608f1220575nullnull
null21021102c03t200306m12132nullnull缓考
null21021102c05t201803f1240550nullnull
null21021103c02t200703m1221868nullnull
null21021103c04t201208m1230892nullnull
null21031101c01t200306m1213280nullnull
null21031101c02t200608f1220595nullnull
null21041102c02t200608f1220556nullnull
null21041102c05t201803f1240588nullnull

输出样例:

PerView视图:

图片.png

create view PerView as
select major as 专业名,count(distinct Student.sno) as 修课人数,avg(grade) as 平均成绩
from Student join SC
    on SC.sno=Student.sno
group by 专业名

 R10-38 从视图PerView中查询数据。

作者 李翔坤

单位 大连东软信息学院

从上题中创建的视图PerView中查询平均成绩超过75分的专业有哪些。

PerView视图结构:

 Create view PerView(专业名, 修课人数, 平均成绩)
AS Select major, count(distinct sc.sno), avg(grade) from student join sc on student.sno=sc.sno group by major;

PerView视图数据样例

PerView视图:

专业名修课人数平均成绩
数据科学172.0
网络工程187.5
计算机科学280.0
软件工程273.4

输出样例:

专业名平均成绩
网络工程87.5
计算机科学80.0

select 专业名,平均成绩
from PerView
where 平均成绩>75;

R10-39 查询学时数高于所有课程平均学时数的课程信息

作者 李翔坤

单位 大连东软信息学院

查询学时数高于所有课程平均学时数的课程信息
提示:请使用SELECT语句作答。

表结构:

create table if not exists Course(
  cno char(10) primary key,
  cname varchar(20) not null,
  ccredit int check(ccredit>0), -- 课程学分
  semester int check(semester>0),  -- 学期
  period int  check(period>0)     -- 总学时
  );

表样例

Course表:

1710600944426.png

输出样例:

1710600971680.png

select cno,cname,ccredit,semester,period
from Course
where period>(select avg(period)
             from Course
             ); 

 

R10-40 查询平均成绩超过所有学生选课平均成绩的学生学号和平均成绩,列名用中文显示

作者 李翔坤

单位 大连东软信息学院

查询平均成绩超过所有学生选课平均成绩的学生学号和平均成绩,列名用中文显示。

提示:请使用SELECT语句作答。

表结构:

create table if not exists SC(    -- 选课成绩单表
  scid  int auto_increment  primary key,
  sno char(8)   references Student(sno),
  cno char(10)  references Course(cno),
  tno char(15)  references Teacher(tno),
  grade int check(grade>=0 and grade<=100),
  gpoint  decimal(2,1),     -- 学生得到的课程绩点
  memo  text(100)    --  备注
  );

表样例

SC表:

1710601260669.png

输出样例:

1710661833829.png

select sno as 学号,avg(grade) as 平均成绩
from SC
group by sno
having avg(grade)>(select avg(grade) from SC);

  • 16
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值