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

S(SNO,SNAME,SAGE,SSEX)学生(学号,姓名,年龄,性别)SC(SNO,CNO,GRADE)选修(学号,课程号,成绩)C(CNO,CNAME,TEACHE... S(SNO,SNAME,SAGE,SSEX)学生(学号,姓名,年龄,性别)
SC(SNO,CNO,GRADE)选修(学号,课程号,成绩)
C(CNO,CNAME,TEACHER)课程(课程号,课程名,授课教师);以上是数据库的三张表,有几道怎么改也没输出完整的正确结果的,来求助一下,拜托帮帮忙啊!
1、统计每门课程的学生选修人数(统计10人以上的课程),要求输出课程号、课程名称、选修人数,按人数降序排列,如果人数相同,按课程号升序排列
2、求年龄大于女生平均年龄的男生姓名和年龄
3、检索S中每门课程成绩都大于等于80分的学生学号、姓名、性别,并把结果存入另一个已存在的表S2(sno,sname,ssex)中,这个我把成绩大于80分的学生都输出来了,但题目要求好像是输出的学生所选的课程必须都达到80分,我的那个结果貌似是只要有一门达到了80分就给输出来了,怎么也不知道怎么改了。。。
4、修改SC表C4课程成绩,若小于等于75提高5%,否则提高4%。。。。

大家帮帮忙吧!!
展开
 我来答
flyingFish211
2011-04-14 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人: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'
追问
最后一个查询分析器显示“在关键字 'ELSE' 附近有语法错误。”还有其实这条语句的格式我不太懂,我们课本上没有case这样的语句,学的东西果然还是太浅了。。。
非常非常崇拜头脑聪明又有技术的前辈们!希望以后还能多多向您求助!嘿嘿!!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式