1. 程式人生 > >45道經典SQL題練習(二)

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;