sql查询命令,急急急!!各位高手们帮帮忙吧!!

2024-12-22 22:57:05
推荐回答(1个)
回答1:

1、统计每门课程的学生选修人数(统计10人以上的课程),要求输出课程号、课程名称、选修人数,
按人数降序排列,如果人数相同,按课程号升序排列
SELECT C.CNO, C.CNAME, COUNT(SC.SNO)
FROM C LEFT JOIN SC
ON C.CNO = SC.CNO
GROUP BY C.CNO,C.CNAME
HAVING COUNT(SNO) > 10
ORDER BY COUNT(SC.SNO) DESC, C.CNO ASC

2、求年龄大于女生平均年龄的男生姓名和年龄
SELECT SNAME, SAGE
FROM S
WHERE SAGE > (SELECT AVG(SAGE) FROM S WHERE SSEX = '女')

3、检索S中每门课程成绩都大于等于80分的学生学号、姓名、性别,并把结果存入另一个已存在的表S2(sno,sname,ssex)中,
这个我把成绩大于80分的学生都输出来了,但题目要求好像是输出的学生所选的课程必须都达到80分,
我的那个结果貌似是只要有一门达到了80分就给输出来了,怎么也不知道怎么改了。。。
求所有大于80分的
SELECT SNO, SNAME, SSEX
FROM S
WHERE NOT EXISTS (SELECT 1 FROM SC WHERE SNO = S.SNO AND GRADE < 80)

完整的就是
INSERT INTO S2(sno, sname, ssex)
SELECT SNO, SNAME, SSEX
FROM S
WHERE NOT EXISTS (SELECT 1 FROM SC WHERE SNO = S.SNO AND GRADE < 80)

4、修改SC表C4课程成绩,若小于等于75提高5%,否则提高4%。。。。
UPDATE SC SET GRADE = GRADE + GRADE (CASE WHEN GRADE <= 7 THEN 4% ELSE 5% END)
WHERE CNO = 'C4'