【每日一练:SQL】求所有数学课程成绩大于语文课程成绩的学生学号

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/debimeng/article/details/87924542

SQL题:
求所有数学课程成绩大于语文课程成绩的学生学号
数据如下:
1,1,语文,73
2,1,数学,55
3,2,语文,77
4,2,数学,88
5,3,语文,98
6,3,数学,65
7,4,语文,78
8,4,数学,69

数据说明:
1,1,语文,43数据格式分别为id、学号、课程、成绩


解答:
数学成绩
大于
语文成绩

数据库版本:Oracle 11g

--创建表
create table t_course(
       id int
       , sid int
       , course varchar2(10)
       , score int);

--插入数据
insert into t_course values(1,1,'语文',73);
insert into t_course values(2,1,'数学',55);
insert into t_course values(3,2,'语文',77);
insert into t_course values(4,2,'数学',88);
insert into t_course values(5,3,'语文',98);
insert into t_course values(6,3,'数学',65);
insert into t_course values(7,4,'语文',78);
insert into t_course values(8,4,'数学',69);

commit;

--1.创建第一个临时表,将语文和数学的成绩分开两列

--先创建表
create table t_course_new
as
select sid
       ,course
       ,case course when '语文' then score else 0 end as yuwen
       ,case course when '数学' then score else 0 end as shuxue
  from t_course
 where 1=2;

--再插入数据
insert into t_course_new
select sid
       ,course
       ,case course when '语文' then score else 0 end as yuwen
       ,case course when '数学' then score else 0 end as shuxue
  from t_course
 where 1=1;

commit;
--查询数据
select * from t_course_new;
SID    COURSE                YUWEN    SHUXUE
1           语文               73        0
1           数学                 0        55
2           语文               77        0
2           数学                 0        88
3           语文               98        0
3           数学                 0        65
4           语文               78        0
4           数学                 0        69

--2.再创建一个临时表,提取语文和数学的成绩实现一个sid一列有语文和数学的成绩

--创建表
create table t_course_two
as
select sid
       ,max(yuwen) as yuwen
       ,max(shuxue) as shuxue
  from t_course_new
 where 1=2
 group by sid;

--插入数据
insert into t_course_two
select sid
       ,max(yuwen) as yuwen
       ,max(shuxue) as shuxue
  from t_course_new
 where 1=1
 group by sid
 order by sid;

--提交
commit;
--查询数据
select * from t_course_two;
SID  YUWEN    SHUXUE
1    73        55
2    77        88
3    98        65
4    78        69

--3.统计数学成绩大于语文成绩的学生学号

select sid
  from t_course_two
 where shuxue > yuwen;

SID
2

猜你喜欢

转载自blog.csdn.net/debimeng/article/details/87924542