create table tb_student(
id number(4) ,
name varchar2(20),
course varchar2(20),
score number(5,2)
);
insert into tb_student values(1,'张三','语文',81);
insert into tb_student values(2,'张三','数学',75);
insert into tb_student values(3,'李四','语文',81);
insert into tb_student values(4,'李四','数学',90);
insert into tb_student values(5,'王五','语文',81);
insert into tb_student values(6,'王五','数学',100);
insert into tb_student values(7,'王五','英语',90);
commit;
drop table tb_student cascade constraints;
select * from tb_student;
-- 使用一条 sql 语句,查询每门课都大于 80 分的学生姓名
--查询的数据:name
--来源:tb_student
--条件: 每门课都大于 80 分(分数的最小值)>80 and 课程数=总共的课程数量
--总共的课程数
select count(distinct course) from tb_student;
--每个人的最小分数
select min(score),name from tb_student group by name;
select name
from tb_student
group by name
having min(score) > 80 and count(1) = (select count(distinct course)
from tb_student);
--行转列
select name,
min(decode(course, '语文', score)) "语文",
avg(decode(course, '数学', score)) "数学",
nvl(max(decode(course, '英语', score)),0) "英语"
from tb_student
group by name;
ORACLE 6
猜你喜欢
转载自blog.csdn.net/digua930126/article/details/92796289
今日推荐
周排行