暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL 经典50题练习之21-30题

2705


本公众号使用SQL SERVER2014测试。SQL语句可能因数据库系统不同而存在少许差异。


测试数据请参照第一章节,各表查询结果如下图:

练习题目

21. 查询男生、女生人数
22. 查询名字中含有「风」字的学生信息
23. 查询同名同性学生名单,并统计同名人数
24. 查询 1990 年出生的学生名单
25. 查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列
26. 查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩
27. 查询课程名称为「数学」,且分数低于 60 的学生姓名和分数
28. 查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)
29. 查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数
30. 查询不及格的课程



参考答案

--------------------------------------------------------

--21. 查询男生、女生人数

    select Ssex,count(*) as 人数  
    from Student group by Ssex

    输出结果


    --22. 查询名字中含有「风」字的学生信息

      select * 
      from Student
      where Sname like '%风%'

      输出结果


      --23. 查询同名同性学生名单,并统计同名人数

        select t1.*,t2.同名人数
        from student t1 LEFT JOIN (select Sname,Ssex,COUNT(*)同名人数 from Student group by Sname,Ssex) as t2
        on t1.Sname =t2.Sname and t1.Ssex=t2.Ssex
        where t2.同名人数>1

        输出结果


        --24. 查询 1990 年出生的学生名单

          select * 
          from Student
          where Sage
          between '1990-01-01 00:00:00.000' and '1991-01-01 00:00:00.000'


            select *
            from student
            where YEAR(student.Sage)=1990

            输出结果


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

              select CId,avg(score) as 平均成绩
              from SC
              group by CId
              order by avg(score) desc ,CId

              输出结果


              --26. 查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩 

                select t1.SId,t1.Sname,t2.avgs 
                from student t1,(select sc.sid,avg(score) as avgs from sc group by sid having avg(score)>=85)t2
                where t1.SId=t2.SId

                输出结果


                --27. 查询课程名称为「数学」,且分数低于 60 的学生姓名和分数 

                  select t1.Sname,t2.score 
                  from student t1,(select sc.sid ,sc.score from Course,sc where Course.CId=sc.CId and Course.Cname='数学' and sc.score<60) t2
                  where t1.sid =t2.sid

                  输出结果


                  --28. 查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)

                    select t1.SId,t1.Sname,t2.CId,t2.score 
                    from Student t1 left join SC t2
                    on t1.SId =t2.SId

                    输出结果

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

                      select t1.Sname,t3.Cname,t2.score 
                      from Student t1,sc t2 ,Course t3
                      where t2.score>=70
                      andt1.SId=t2.SId
                      and t2.CId=t3.CId

                      输出结果

                      --30. 查询不及格的课程

                        select distinct sc.CId from sc where score<60

                        输出结果


                        如果觉得对您有一丢丢帮助,请点击右下角在看,让更多人看到该文章。

                        长按识别二维码

                        关注获取视频资料





                        本文分享自微信公众号 - SQL数据库入门学习,如有侵权,请联系 service001@enmotech.com 删除。
                        文章转载自SQL数据库入门学习,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                        评论