請查詢某一科目分數大於85分的所有學生的名單

2021-07-10 01:36:23 字數 3681 閱讀 6620

這是一道面試題

題目**--

--學生表字段分別表示:學生id,學生所屬班級id,學生名稱

create table student (

std_id varchar(30) primary key,

cls_id varchar(30),

std_name varchar(30),

constraint cls_id_fk1 foreign key(cls_id) references class(cls_id)

)--班級表字段分別表示:班級id,班級名稱

create table class (

cls_id varchar(30) primary key,

cls_name varchar(30)

)--分數表字段分別表示:分數id,學生id,課程id,

create table score (

s_id varchar(30),

std_id varchar(30),

t_id varchar(30),

s_value int,

constraint std_id_fk1 foreign key(std_id) references student(std_id),

constraint t_id_fk1 foreign key(t_id) references timetable(t_id)

)--課程表字段分別表示:課程id,課程名稱

create table timetable (

t_id varchar(30) primary key,

t_name varchar(30)

)drop table class;

drop table timetable;

drop table score;

insert into class (cls_id,cls_name) values ('cls001','a');

insert into class (cls_id,cls_name) values ('cls002','b');

insert into class (cls_id,cls_name) values ('cls003','c');

insert into class (cls_id,cls_name) values ('cls004','d');

insert into timetable (t_id,t_name) values ('t001','語文');

insert into timetable (t_id,t_name) values ('t002','數學');

insert into timetable (t_id,t_name) values ('t003','英語');

insert into timetable (t_id,t_name) values ('t004','化學');

insert into student (std_id,cls_id,std_name) values ('std001','cls001','張三');

insert into student (std_id,cls_id,std_name) values ('std002','cls001','李四');

insert into student (std_id,cls_id,std_name) values ('std003','cls002','王五');

insert into student (std_id,cls_id,std_name) values ('std004','cls003','小劉');

insert into student (std_id,cls_id,std_name) values ('std005','cls004','大氣');

insert into score (s_id,std_id,t_id,s_value) values ('s001','std001','t001',23);

insert into score (s_id,std_id,t_id,s_value) values ('s002','std001','t001',33);

insert into score (s_id,std_id,t_id,s_value) values ('s003','std001','t002',59);

insert into score (s_id,std_id,t_id,s_value) values ('s004','std002','t003',66);

insert into score (s_id,std_id,t_id,s_value) values ('s005','std002','t004',72);

insert into score (s_id,std_id,t_id,s_value) values ('s006','std003','t001',87);

insert into score (s_id,std_id,t_id,s_value) values ('s007','std003','t002',99);

insert into score (s_id,std_id,t_id,s_value) values ('s008','std004','t003',61);

insert into score (s_id,std_id,t_id,s_value) values ('s009','std005','t004',94);

insert into score (s_id,std_id,t_id) values ('s010','std005','t004');

insert into score (s_id,std_id,t_id,s_value) values ('s011','std001','t003',86);

insert into score (s_id,std_id,t_id,s_value) values ('s012','std002','t003',88);

select * from class;

select * from timetable;

select * from student;

select * from score;

----請查詢某一科目分數大於85分的所有學生的名單,

----查詢列包括 學生姓名,班級名稱,大於等於85分的科目數,小於85(包含無成績的)科目數;

select student.std_name,class.cls_name,

sum(case when score.s_value>=85 then 1 else 0 end) as '大於等於85分的科目數',

sum(case when score.s_value>=85 then 0 else 1 end) as '小於85(包含無成績的)科目數',timetable.t_name,count(*)

from student,class,score,timetable

where score.t_id=timetable.t_id

and score.std_id=student.std_id

and student.cls_id=class.cls_id

or score.s_value=null

group by score.std_id