300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > mysql及格率70以上_数据库实例(统计最高分学生信息 不及格率等等)

mysql及格率70以上_数据库实例(统计最高分学生信息 不及格率等等)

时间:2022-06-24 03:15:35

相关推荐

mysql及格率70以上_数据库实例(统计最高分学生信息 不及格率等等)

1.职工表:Employee:

ID Name Department Job Email Password

10000 李明 SBB

10001 李筠平 LUK

11045 李洁 SBB

10044 胡斐 MTD

10009 徐仲刚 SBB

10023 李燕 SBB

20460 陆明生 MTD

8 张青 MMM

20001 李立 LUK

2.培训表:Train:

CourseID ID Course Grade TOrder

1 10001 T-SQL 60

3 11045 Oracle 71

2 20460 Java 34

1 10003 T-SQL 59

3 10001 Oracle 90

2 20001 Java 12

2 8 Java 78

2 10003 Java 78

3 30001 Oracle 71

3 8 Oracle 36

1、建表Employee与Train,分析这两个表的结构,自行设置主键。

create table employee(

ID int primary key,

name varchar2(30),

department char(10),

job varchar2(20),

Email varchar2(30),

Password varchar2(10));

create table Train (

courseID int,

ID int,

course varchar2(10),

grade int,

Torder char(10));

2、用Insert SQL语句把上述两表的数据分别插入建好的表。

insert into employee values(10000 ,'李明','SBB',' ',' ',' ');

insert into employee values(10001,'李筠平','LUK',' ',' ',' ');

insert into employee values(11045,'李洁','SBB',' ',' ',' ');

insert into employee values(11044,'胡斐','MTD',' ',' ',' ');

insert into employee values(10009,'徐仲刚','SBB',' ',' ',' ');

insert into employee values(10023,'李燕','SBB',' ',' ',' ');

insert into employee values(20460,'陆明生','MTD',' ',' ',' ');

insert into employee values(8,'张青','MMM',' ',' ',' ');

insert into employee values(20001,'李立','LUK',' ',' ',' ');

insert into Train values(1,10001,'T-SQL',60,' ');

insert into Train values(3,11045,'Oracle',71,' ');

insert into Train values(2,20460,'Java',34,' ');

insert into Train values(3,10001,'Oracle',90 ,' ');

insert into Train values(1,10003,'T-SQL',59,' ');

insert into Train values(2,20001,'Java',12,' ');

insert into Train values(2,8,'Java',78 ,' ');

insert into Train values(2,10003,'Java',78 ,' ');

insert into Train values(3,30001,'Oracle',71 ,' ');

insert into Train values(3,8,'Oracle',36 ,' ');

3、统计出各部门的人数和各部门姓“李”的人数,用一条SQL语句完成。

select a.dept,a.sum,b.Li

from ( select department dept,count(id) sum

from employee

group by department) a left join (select department dept,count(id) Li

from employee

where name like '李%'

group by department) b on a.dept=b.dept;

4、列出所有员工参加培训的情况,要求显示ID、Name、Department、Course,用一条SQL语句完成。

select a.ID,a.name,a.department,b.course from employee a,Train b where a.ID=b.ID;

5、筛选出未参加培训的人员名单,按职工表的格式显示,用一条SQL语句完成。

select *

from employee

where employee.ID not in(select ID from Train);

6、更新员工的Email,规则为:员工所在部门名称加员工姓名再加“@”,用一条SQL语句完成。

oracle:selectdepartment||name||'@'as email from employee;

mysql:select concar(department,name,'@') as email from employee;

7、列出所有各课成绩最高的员工信息,要求显示EID、Name、Department、Course、Grade,用一条SQL语句完成。

select E.ID EID,E.name,E.department,T.course,T.grade

from employee E, Train T,(select ID,course from Train

where not exists(select ID from Train t2

where Train.course=t2.course and Train.grade

where A.ID=T.ID and E.ID =A.ID and A.course=T.course;

或者

select T.ID,M.course,T.grade,E.name,E.department

from employee E,Train T,(select course,max(grade) maxgrade

from Train

group by course) M

where M.course=T.course and T.grade =M.maxgrade and T.ID=M.ID;

8、把所有Train有但Employee没有的员工编号插入到职工表中,用一条SQL语句完成。

oracle:

insert into employee(ID)

select t2.ID from employee t1,Train t2

where t2.ID not in(select t1.ID

from employee t1);

Mysql:

replace employee(ID)

select t2.ID from employee t1,Train t2

where t2.ID not in(select t1.ID

from employee t1);

9、分析Train与Employee的关系,建立表1与表2之间的引用关系并实现级联操作。

oracle:

alter table Train

add constraint fk_train ID references employee(ID) on delete cascade;

Mysql:

alter table Train add constraint fk_train foreign key(ID) references employee(ID)

on delete cascade;

10、统计列印各门课程成绩各分数段人数:

课程ID,课程名称,[100-85],[84-70],[69-60],[<60]

select distinct T.course, T.courseID,A.[100-85]

from Train T,(select ID,count(ID) as [100-85]

from Train

where grade between 85 and 100 group by ID) A

where T.ID=A.ID;

select distinct T.course, T.courseID,A.[84-70]

from Train T,(select ID,count(ID) as [84-70]

from Train

where grade between 70 and 84 group by ID) A

where T.ID=A.ID;

select distinct T.course, T.courseID,A.[69-60]

from Train T,(select ID,count(ID) as [69-60]

from Train

where grade between 60 and 69 group by ID) A

where T.ID=A.ID;

select distinct T.course, T.courseID,A.[<60]

from Train T,(select ID,count(ID) as [<60]

from Train

where grade < 60 group by ID) A

where T.ID=A.ID;

11、按各科不及格率的百分数从低到高和平均成绩从高到低顺序,统计并列印各科平均成绩和不及格率的百分数(用"N行"表

示): (就是分析哪门课程难)

课程ID,课程名称,平均成绩,不及格百分数

select distinct T.course, T.courseID,average,A.HC/C.count as failrate

from Train T,(select ID,count(ID) as HC

from Train where grade < 60 group by ID) A,

(select courseID,avg(grade) average,count(ID) as count

from Train group by courseID) C

where T.ID=A.ID and T.courseID=C.courseID;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。