题目是:建立一下数据库表
create table student
(name varchar2(30),
kecheng varchar2(30),
fenshu number(20)
)
然后向数据库插入以下数据
insert all
into student values('张三','语文',81)
into student values('张三','数学',75)
into student values('李四','语文',56)
into student values('李四','数学',90)
into student values('王五','语文',81)
into student values('王五','数学',100)
into student values('王五','英语',40)
select count(name) from student
问题是:
(1) 找出至少有一门课成绩的学生名单;
(2) 找出平均分比“王五”的平均分高的学生;
(3) 找出至少有一门课成绩大于80的学生;
(4) 列出各门课程的最低分学生;
(5) 列出所有学生都及格的课程
请各位大佬帮忙写个查询语句,小弟刚刚接触oracle 谢谢大家!!!!
------解决方案--------------------
SELECT DISTINCT T.NAME FROM STUDENT T WHERE T.FENSHU > 0;
SELECT T.NAME
FROM STUDENT T
GROUP BY T.NAME
HAVING AVG(T.FENSHU) > (SELECT AVG(T.FENSHU)
FROM STUDENT T
WHERE T.NAME = 'wangwu'
GROUP BY T.NAME);
SELECT DISTINCT (T.NAME) FROM STUDENT T WHERE T.FENSHU > 80;
SELECT T.NAME, T1.KECHENG, T1.FENGSHU
FROM STUDENT T,
(SELECT KECHENG, MIN(FENSHU) FENGSHU FROM STUDENT GROUP BY KECHENG) T1
WHERE T.KECHENG = T1.KECHENG
AND T1.FENGSHU = T.FENSHU;
SELECT DISTINCT KECHENG
FROM STUDENT T
WHERE T.KECHENG NOT IN
(SELECT DISTINCT (KECHENG) KECHENG FROM STUDENT T WHERE T.FENSHU < 60)
------解决方案--------------------
好像是网上盛传的面试题