分享一个题,请大神给我讲解一下,有关于pl/sql的,下面发代码截图和代码
9、按各科平均成绩从低到高和及格率的百分数从高到低顺序
及格率:大于60分的人数/总人数(选课总人数)
--SELECT * FROM STUDENT;
--SELECT * FROM TEACHER;
--SELECT * FROM COURSE;
--SELECT * FROM SC;
SELECT AVG(SCORE) FROM SC GROUP BY CNO;--各科平均成绩
SELECT COUNT(SCORE) FROM SC WHERE SCORE>60 GROUP BY CNO;--各科大于六十分的人数
SELECT COUNT(SNO) FROM SC GROUP BY CNO;--各科总人数
SELECT COUNT('1') / COUNT('2') "及格率"
FROM SC
WHERE '1' IN (SELECT COUNT(SCORE) FROM SC WHERE SCORE > 60 GROUP BY CNO)
AND '2' IN (SELECT COUNT(SNO) FROM SC GROUP BY CNO); --及格率(报错,除数为零)
SELECT SC.*, '及格率'
FROM SC
ORDER BY (SELECT AVG(SCORE) FROM SC GROUP BY CNO),
(SELECT COUNT('1') / COUNT('2') "及格率"
FROM SC
WHERE '1' IN
(SELECT COUNT(SCORE) FROM SC WHERE SCORE > 60 GROUP BY CNO)
AND '2' IN (SELECT COUNT(SNO) FROM SC GROUP BY CNO)) DESC;