45道经典SQL题练习(二)

-- 11、查询‘3-105’号课程的平均分。
SELECT AVG(DEGREE) AS AVG_DEGREE
FROM SCORE
WHERE CNO='3-105';
-- 12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
SELECT CNO,AVG(DEGREE)
FROM SCORE
WHERE CNO LIKE '3%'
GROUP BY CNO
HAVING COUNT(SNO)>=5;
-- 13、查询最低分大于70,最高分小于90的Sno列。
SELECT SNO FROM SCORE
WHERE DEGREE>70 AND DEGREE<90;
-- 14、查询所有学生的Sname、Cno和Degree列。
SELECT SNAME,CNO,DEGREE FROM STUDENT,SCORE
WHERE STUDENT.SNO=SCORE.SNO;
-- 15、查询所有学生的Sno、Cname和Degree列。
SELECT SNO,CNAME,DEGREE FROM SCORE,COURSE
WHERE SCORE.CNO=COURSE.CNO;
-- 16、查询所有学生的Sname、Cname和Degree列。
SELECT SNAME,CNAME,DEGREE 
FROM STUDENT,COURSE,SCORE
WHERE STUDENT.SNO=SCORE.SNO
	AND COURSE.CNO=SCORE.CNO;
-- 17、查询“95033”班所选课程的平均分。
SELECT AVG(DEGREE)
FROM STUDENT,SCORE
WHERE SCLASS='95033'
AND STUDENT.SNO=SCORE.SNO;
-- 18.假设使用如下命令建立了一个grade表:
-- CREATE TABLE GRADE
-- (LOW INT(3),
-- UPP INT(3),
-- RANK CHAR(1));
-- insert into grade values(90,100,'A');
-- insert into grade values(80,89,'B');
-- insert into grade values(70,79,'C');
-- insert into grade values(60,69,'D');
-- insert into grade values(0,59,'E');
-- 现查询所有同学的Sno、Cno和rank列。
SELECT SNO,CNO,RANK FROM SCORE,GRADE
WHERE DEGREE BETWEEN LOW AND UPP;

-- 19、查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
SELECT SNO,DEGREE FROM SCORE
WHERE CNO='3-105'
AND DEGREE>(SELECT DEGREE FROM SCORE
WHERE CNO='3-105' AND SNO=109);
-- 20、查询score中选学一门以上课程的同学中分数为非最高分成绩的记录。
SELECT * FROM SCORE
WHERE DEGREE<(SELECT MAX(DEGREE) FROM SCORE)
GROUP BY SNO
HAVING COUNT(SNO)>1;

猜你喜欢

转载自blog.csdn.net/qq_41996090/article/details/83019254
今日推荐