问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

急求!!!用SQL查询学生的所有选课信息的语句该怎么写?前面已经建好了Student、Course和SC的表了

发布网友 发布时间:2022-04-09 09:39

我来回答

2个回答

懂视网 时间:2022-04-09 14:01

a.s# FROM ( SELECT * FROM dbo.SC WHERE c# = ‘001‘ ) a INNER JOIN ( SELECT * FROM dbo.SC WHERE c# = ‘002‘ ) b ON a.s# = b.s# WHERE a.score > b.score

 

2、查询平均成绩大于60分的同学的学号和平均成绩;

SELECT s# ,
 AVG(score)
FROM dbo.SC
GROUP BY s#
HAVING AVG(score) > 60 

 

3、查询所有同学的学号、姓名、选课数、总成绩;

SELECT a.s# ,
 a.sname ,
 COUNT(b.c#) ,
 SUM(b.score)
FROM dbo.Student a
 LEFT OUTER JOIN dbo.SC b ON a.s# = b.s#
GROUP BY a.s# ,
 a.sname

 

4、查询姓“李”的老师的个数;

SELECT COUNT(DISTINCT tname)
FROM dbo.Teacher
WHERE tname LIKE ‘李%‘

 

5、查询没学过“叶平”老师课的同学的学号、姓名;

SELECT Student.S# ,
 Student.Sname
FROM Student
WHERE S# NOT IN ( SELECT DISTINCT
    ( SC.S# )
   FROM SC ,
    Course ,
    Teacher
   WHERE SC.C# = Course.C#
    AND Teacher.T# = Course.T#
    AND Teacher.Tname = ‘叶平‘ )

 

6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;

SELECT Student.S# ,
 Student.Sname
FROM Student ,
 SC
WHERE Student.S# = SC.S#
 AND SC.C# = ‘001‘
 AND EXISTS ( SELECT *
   FROM SC AS SC_2
   WHERE SC_2.S# = SC.S#
    AND SC_2.C# = ‘002‘ )

 

7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;

SELECT S# ,
 Sname
FROM Student
WHERE S# IN ( SELECT S#
  FROM SC ,
   Course ,
   Teacher
  WHERE SC.C# = Course.C#
   AND Teacher.T# = Course.T#
   AND Teacher.Tname = ‘叶平‘
  GROUP BY S#
  HAVING COUNT(SC.C#) = ( SELECT COUNT(C#)
      FROM Course ,
      Teacher
      WHERE Teacher.T# = Course.T#
      AND Tname = ‘叶平‘
     ) )

 

8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;

SELECT S# ,
 Sname
FROM ( SELECT Student.S# ,
   Student.Sname ,
   score ,
   ( SELECT score
   FROM SC SC_2
   WHERE SC_2.S# = Student.S#
    AND SC_2.C# = ‘002‘
   ) score2
  FROM Student ,
   SC
  WHERE Student.S# = SC.S#
   AND C# = ‘001‘
 ) S_2
WHERE score2 < score

 

9、查询所有课程成绩小于60分的同学的学号、姓名;

SELECT S# ,
 Sname
FROM Student
WHERE S# NOT IN ( SELECT Student.S#
   FROM Student ,
    SC
   WHERE Student.S# = SC.S#
    AND score > 60 )

 

10、查询没有学全所有课的同学的学号、姓名;

SELECT Student.S# ,
 Student.Sname
FROM Student ,
 SC
WHERE Student.S# = SC.S#
GROUP BY Student.S# ,
 Student.Sname
HAVING COUNT(C#) < ( SELECT COUNT(C#)
   FROM Course
   )

 

11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;

SELECT S# ,
 Sname
FROM Student ,
 SC
WHERE Student.S# = SC.S#
 AND C# IN ( SELECT C#
   FROM SC
   WHERE S# = ‘1001‘ )

 

12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;

SELECT DISTINCT
 SC.S# ,
 Sname
FROM Student ,
 SC
WHERE Student.S# = SC.S#
 AND C# IN ( SELECT C#
   FROM SC
   WHERE S# = ‘001‘ )

 

13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;

UPDATE SC
SET score = ( SELECT AVG(SC_2.score)
   FROM SC SC_2
   WHERE SC_2.C# = SC.C#
  )
FROM Course ,
 Teacher
WHERE Course.C# = SC.C#
 AND Course.T# = Teacher.T#
 AND Teacher.Tname = ‘叶平‘

 

14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;

SELECT S#
FROM SC
WHERE C# IN ( SELECT C#
  FROM SC
  WHERE S# = ‘1002‘ )
GROUP BY S#
HAVING COUNT(*) = ( SELECT COUNT(*)
   FROM SC
   WHERE S# = ‘1002‘
   )

 

15、删除学习“叶平”老师课的SC表记录;

DELETE SC
FROM course ,
 Teacher
WHERE Course.C# = SC.C#
 AND Course.T# = Teacher.T#
 AND Tname = ‘叶平‘

 

16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2、 号课的平均成绩;

INSERT SC
 SELECT S# ,
  ‘002‘ ,
  ( SELECT AVG(score)
   FROM SC
   WHERE C# = ‘002‘
  )
 FROM Student
 WHERE S# NOT IN ( SELECT S#
    FROM SC
    WHERE C# = ‘002‘ )

 

17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示: 学生ID,,数据库,企业管理,英语,有效课程数,有效平均分

SELECT S# AS 学生ID ,
 ( SELECT score
  FROM SC
  WHERE SC.S# = t.S#
   AND C# = ‘004‘
 ) AS 数据库 ,
 ( SELECT score
  FROM SC
  WHERE SC.S# = t.S#
   AND C# = ‘001‘
 ) AS 企业管理 ,
 ( SELECT score
  FROM SC
  WHERE SC.S# = t.S#
   AND C# = ‘006‘
 ) AS 英语 ,
 COUNT(*) AS 有效课程数 ,
 AVG(t.score) AS 平均成绩
FROM SC AS t
GROUP BY S#
ORDER BY AVG(t.score) 

 

18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分

SELECT L.C# AS 课程ID ,
 L.score AS 最高分 ,
 R.score AS 最低分
FROM SC L ,
 SC AS R
WHERE L.C# = R.C#
 AND L.score = ( SELECT MAX(IL.score)
   FROM SC AS IL ,
    Student AS IM
   WHERE L.C# = IL.C#
    AND IM.S# = IL.S#
   GROUP BY IL.C#
   )
 AND R.Score = ( SELECT MIN(IR.score)
   FROM SC AS IR
   WHERE R.C# = IR.C#
   GROUP BY IR.C#
   )

 

19、按各科平均成绩从低到高和及格率的百分数从高到低顺序

SELECT t.C# AS 课程号 ,
 MAX(course.Cname) AS 课程名 ,
 ISNULL(AVG(score), 0) AS 平均成绩 ,
 100 * SUM(CASE WHEN ISNULL(score, 0) >= 60 THEN 1
   ELSE 0
   END) / COUNT(*) AS 及格百分数
FROM SC T ,
 Course
WHERE t.C# = course.C#
GROUP BY t.C#
ORDER BY 100 * SUM(CASE WHEN ISNULL(score, 0) >= 60 THEN 1
   ELSE 0
   END) / COUNT(*) DESC 

 

20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004)

SELECT SUM(CASE WHEN C# =‘001‘ THEN score ELSE 0 END)/SUM(CASE C# WHEN ‘001‘ THEN 1 ELSE 0 END) AS 企业管理平均分 
,100 * SUM(CASE WHEN C# = ‘001‘ AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = ‘001‘ THEN 1 ELSE 0 END) AS 企业管理及格百分数 
,SUM(CASE WHEN C# = ‘002‘ THEN score ELSE 0 END)/SUM(CASE C# WHEN ‘002‘ THEN 1 ELSE 0 END) AS 马克思平均分 
,100 * SUM(CASE WHEN C# = ‘002‘ AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = ‘002‘ THEN 1 ELSE 0 END) AS 马克思及格百分数 
,SUM(CASE WHEN C# = ‘003‘ THEN score ELSE 0 END)/SUM(CASE C# WHEN ‘003‘ THEN 1 ELSE 0 END) AS UML平均分 
,100 * SUM(CASE WHEN C# = ‘003‘ AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = ‘003‘ THEN 1 ELSE 0 END) AS UML及格百分数 
,SUM(CASE WHEN C# = ‘004‘ THEN score ELSE 0 END)/SUM(CASE C# WHEN ‘004‘ THEN 1 ELSE 0 END) AS 数据库平均分 
,100 * SUM(CASE WHEN C# = ‘004‘ AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = ‘004‘ THEN 1 ELSE 0 END) AS 数据库及格百分数 
FROM SC 

 

21、查询不同老师所教不同课程平均分从高到低显示

SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ID,MAX(C.Cname) AS 课程名称,AVG(Score) AS 平均成绩 
FROM SC AS T,Course AS C ,Teacher AS Z 
where T.C#=C.C# and C.T#=Z.T# 
GROUP BY C.C# 
ORDER BY AVG(Score) DESC 

 

22、查询如下课程成绩第 3 名到第 6 名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004) [学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩

SELECT DISTINCT top 3 
SC.S# As 学生学号, 
Student.Sname AS 学生姓名 , 
T1.score AS 企业管理, 
T2.score AS 马克思, 
T3.score AS UML, 
T4.score AS 数据库, 
ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分 
FROM Student,SC LEFT JOIN SC AS T1 
ON SC.S# = T1.S# AND T1.C# = ‘001‘ 
LEFT JOIN SC AS T2 
ON SC.S# = T2.S# AND T2.C# = ‘002‘ 
LEFT JOIN SC AS T3 
ON SC.S# = T3.S# AND T3.C# = ‘003‘ 
LEFT JOIN SC AS T4 
ON SC.S# = T4.S# AND T4.C# = ‘004‘ 
WHERE student.S#=SC.S# and 
ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) 
NOT IN 
(SELECT 
DISTINCT 
TOP 15 WITH TIES 
ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) 
FROM sc 
LEFT JOIN sc AS T1 
ON sc.S# = T1.S# AND T1.C# = ‘k1‘ 
LEFT JOIN sc AS T2 
ON sc.S# = T2.S# AND T2.C# = ‘k2‘ 
LEFT JOIN sc AS T3 
ON sc.S# = T3.S# AND T3.C# = ‘k3‘ 
LEFT JOIN sc AS T4 
ON sc.S# = T4.S# AND T4.C# = ‘k4‘ 
ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC)

 

23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]

SELECT SC.C# as 课程ID, Cname as 课程名称 
,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85] 
,SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70] 
,SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60] 
,SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -] 
FROM SC,Course 
where SC.C#=Course.C# 
GROUP BY SC.C#,Cname

 

24、查询学生平均成绩及其名次

SELECT 1+(SELECT COUNT( distinct 平均成绩) 
FROM (SELECT S#,AVG(score) AS 平均成绩 
FROM SC 
GROUP BY S# 
) AS T1 
WHERE 平均成绩 > T2.平均成绩) as 名次, 
S# as 学生学号,平均成绩 
FROM (SELECT S#,AVG(score) 平均成绩 
FROM SC 
GROUP BY S# 
) AS T2 
ORDER BY 平均成绩 desc

 

25、查询各科成绩前三名的记录:(不考虑成绩并列情况)

SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数 
FROM SC t1 
WHERE score IN (SELECT TOP 3 score 
FROM SC 
WHERE t1.C#= C# 
ORDER BY score DESC 
) 
ORDER BY t1.C#; 

 

26、查询每门课程被选修的学生数

select c#,count(S#) from sc group by C#; 

 

27、查询出只选修了一门课程的全部学生的学号和姓名

select SC.S#,Student.Sname,count(C#) AS 选课数 
from SC ,Student 
where SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1; 

 

28、查询男生、女生人数

Select count(Ssex) as 男生人数 from Student group by Ssex having Ssex=‘男‘; 
Select count(Ssex) as 女生人数 from Student group by Ssex having Ssex=‘女‘; 

 

29、查询姓“张”的学生名单

SELECT Sname FROM Student WHERE Sname like ‘张%‘; 

 

30、查询同名同性学生名单,并统计同名人数

select Sname,count(*) from Student group by Sname having count(*)>1;; 

 

31、1981年出生的学生名单(注:Student表中Sage列的类型是datetime)

select Sname, CONVERT(char (11),DATEPART(year,Sage)) as age 
from student 
where CONVERT(char(11),DATEPART(year,Sage))=‘1981‘; 

 

32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列

Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ; 

 

33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩

select Sname,SC.S# ,avg(score) 
from Student,SC 
where Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85; 

 

34、查询课程名称为“数据库”,且分数低于60的学生姓名和分数  

Select Sname,isnull(score,0) 
from Student,SC,Course 
where SC.S#=Student.S# and SC.C#=Course.C# and Course.Cname=‘数据库‘and score <60; 

 

35、查询所有学生的选课情况;

SELECT SC.S#,SC.C#,Sname,Cname 
FROM SC,Student,Course 
where SC.S#=Student.S# and SC.C#=Course.C# ; 

 

36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;

SELECT distinct student.S#,student.Sname,SC.C#,SC.score 
FROM student,Sc 
WHERE SC.score>=70 AND SC.S#=student.S#; 

 

37、查询不及格的课程,并按课程号从大到小排列

select c# from sc where score <60 order by C# ; 

 

38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;

select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#=‘003‘; 

 

39、求选了课程的学生人数

select count(*) from sc; 

 

40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩

select Student.Sname,score 
from Student,SC,Course C,Teacher 
where Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname=‘叶平‘ and SC.score=(select max(score)from SC 
 var cpro_id = "u6292429";
 



                                        

热心网友 时间:2022-04-09 11:09

select student.sname,course.cname--查询学生名,课程名
from student,course,sc where student.sno=sc.sno and course.cno=sc.cno--三个表之间的关联
order by student.sname --按姓名排序

字段名有跟你不一样的,自行修改一下

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...养了好长时间,就开一个小花,请问谁知道如何开花! 李启尚百科名片 熊宝豆丁公司简介 年满多少岁贩毒应负刑事责任 年满多少周岁的人贩毒要负刑事责任 已满多少周岁的人贩毒担刑事责任 多少岁的人贩毒应当负刑事责任 五月天后来的我们歌词五月天后来的我们歌词简单介绍 厄瓜多尔虾安全吗? 独库公路吃住玩攻略_穷游怎么解决吃住 编写SQL语句,查询出至少有40个学生选修的课程信息(求高手 表明和课程名直接用拼音命名即可) 关于游戏王 我爱芳邻的演职员表 我爱芳龄男主演是谁? 求 一部战斗动漫 ROUGH 我爱芳邻 好看校园日剧电影或者电视剧(要简介) 《我爱芳邻》中的朱山老师是谁演的?加急,谢谢。 求《交响情人梦》的演员列表 虫之歌bug一共有多少本?求列举 每本的名字。 还有正传赎梦的魔法使是第9本吗?10和11是什么? 我一个微信群里有一个人。他不是群主,为什么可以@所有人。群消息提示确实有红色的字有人@我,我进去一 请问这是哪个动漫了的?跪求。。。 夏目友人帐语c自述怎么写 绪方由梨子(《夏目友人帐》)在漫画中的出场。 win10系统所有浏览器网页打印都提示ActiveXObject is not defined? WIN10下EDGE无法打印,求助。 请教高手 win10 IE 加载打印插件后不能打印? Win10 IE打印页面设置发生错误13怎么解决 win10不能打印网页可以打印word 关于SQL综合应用题(学生选课系统) 鞋带丢了。重新买了白色鞋带,可是鞋子晒黄了,颜色不搭,怎样把鞋带变黄 商鞅变法是怎么进行的,为何会把自己变没了? 商鞅变法是怎么把自己变没的,为什么说“最厉害的是他,最惨的也是他”? 为什么商鞅成就了秦国,却毁灭了自己? 商鞅使秦国强大,为何自己却悲剧收场呢? 聪明一世的商鞅,为什么会作茧自缚? 商鞅为什么会牺牲自己的生命 商鞅为什么最后自己被五马分尸 商鞅使秦国强大,为何自己却悲剧收场? 秦朝改革家商鞅,为何说他是自己“作死”的? 商鞅最终是否作法自缚? 商鞅是真么死的 商鞅为何会遭受车裂和灭门? 商鞅为什么会被车裂,真相其实是自己作茧自缚 商鞅变法压榨百姓,商鞅本人死有余辜吗? 怎么用SQL语句查询,条件如下,学生选课,已选的课程不能选 婚礼建群叫什么群名 取个群名,都是结婚后的人群,共同探讨结婚后的生活及情感 结婚的群聊起个什么名字 用SQL语句查询每个学生选修的课程名及其成绩?