• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >MsSql > 关与sql查询的题目及其答案

关与sql查询的题目及其答案

作者:K_122的博客 字体:[增加 减小] 来源:互联网 时间:2017-08-07

K_122的博客通过本文主要向大家介绍了sql数据库题目,sql考试题目,sql题目,sql面试题目,sql语句题目等相关知识,希望本文的分享对您有所帮助


          一,简介

                             本博客收录了,一些常见的sql语句的写法,值得借鉴,学习,其中有些是比较复杂的,


                               1.sql数据

                                                   有关的sql测试数据在以下链接
                                  

                                                           链接:http://download.csdn.net/detail/k_122/9923538,免费的


                             2.题目以及答案

                                                 
                                 *1、查询课程1的成绩 比 课程2的成绩 高 的所有学生的学号.

                                     SELECT a.sno ,a.score,b.score from (SELECT sno ,score from  j_score where cno = '1') a ,
                                    (SELECT sno ,score from  j_score where cno = '2') b
                                    WHERE a.score > b.score and  a.sno = b.sno

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

                                     SELECT sno,AVG(score) FROM j_score GROUP BY sno HAVING AVG(score)>60

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

                                     SELECT s.sno,s.sname,COUNT(sc.cno),SUM(sc.score) FROM j_student s LEFT OUTER JOIN

                                     j_score sc ON s.sno=sc.sno GROUP BY s.sno,s.sname

 
                                  4、查询姓“李”的学生的个数;

                                         SELECT COUNT(*) FROM j_student WHERE sname LIKE "李%";


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

                                    SELECT sno,sname FROM j_student WHERE sno NOT IN(
                                     SELECT DISTINCT sno FROM j_score WHERE cno IN
                                      (SELECT cno FROM j_course WHERE  tno IN
                                       (SELECT tno FROM j_teacher WHERE tname='叶平'))
                                             )

 
 
                                *6、查询同时学过课程1和课程2的同学的学号、姓名

                                         select s.sno, s.sname from j_student s
                                         where s.sno in (select sc.sno from j_score sc
                                            where sc.cno = 1)
                                         and s.sno in (select sno from j_score  where cno = 2)


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

                                      select s.sno,s.sname from j_student s
                                        where s.sno in (select distinct(sc.sno) from
                                     j_score sc,j_course c, j_teacher t
                                     where sc.cno=c.cno and t.tno=c.tno
                                          and t.tname='叶平')

                               8、查询 课程编号1的成绩 比 课程编号2的成绩 高的所有同学的学号、姓名

                                        SELECT a.sno, STU.sname,a.score,b.score from j_student stu, (SELECT sno ,score from  j_score where cno = '1') a ,
                                        (SELECT sno ,score from  j_score where cno = '2') b
                                          WHERE a.score > b.score and  a.sno = b.sno and stu.sno = b.sno 


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


                                     SELECT s.sno,s.sname FROM j_student s WHERE s.sno NOT IN
                                      (SELECT s.sno FROM j_student s LEFT JOIN j_score sc ON s.sno=sc.sno WHERE sc.score>60 OR sc.score IS NULL)


                              10、查询所有课程成绩大于60分的同学的学号、姓名

                                    SELECT s.sno,s.sname FROM j_student s WHERE s.sno NOT IN
                                      (SELECT s.sno FROM j_student s LEFT JOIN j_score sc ON s.sno=sc.sno WHERE sc.score<60 OR sc.score IS NULL)


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

                                         SELECT s1.sno FROM (SELECT sc.sno,sc.cno AS course1 FROM j_score sc GROUP BY sc.sno) s1,
                                        (SELECT COUNT(*) AS course2 FROM j_course) s2
                                          WHERE course1!=course2

                                              

 
                                12、查询至少有一门课程 与 学号为1的同学所学课程 相同的同学的学号和姓名

                                            

                                             SELECT DISTINCT s.sno,s.sname from j_student s ,j_score sc
                                              WHERE  s.sno <> 1 and  s.sno = sc.sno and sc.cno in (SELECT cno from j_score  where sno = 1)


 
                                 13、查询和2号同学学习的课程完全相同的其他同学学号和姓名
 
                                            

                                             SELECT s.sno ,s.sname from j_score sc,j_student s
                                             WHERE s.sno <> 2 and s.sno = sc.sno
                                              GROUP BY s.sno ,s.sname
                                              HAVING SUM(sc.cno) = (SELECT SUM(cno) from j_score where sno =2)

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

                                        

                                             select cno as 课程号, max(score) as 最高分, min(score) 最低分
                                              from j_score group by cno
   

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

                                           SELECT c.cname,COUNT(sc.sno)  from j_course c LEFT JOIN j_score sc
                                           on c.cno = sc.cno  GROUP BY c.cname

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

                                        SELECT s.sno ,s.sname,COUNT(sc.cno) from j_student s LEFT JOIN j_score sc
                                        on s.sno = sc.sno GROUP BY s.sno,s.sname HAVING COUNT(sc.cno) = 1


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


                                                   SELECT s.sname ,COUNT(s.sname) from j_student s ,
                                                 (SELECT sname,ssex from j_student  )t
                                                    WHERE s.sname = t.sname and s.ssex = t.ssex
                                                     GROUP BY s.sname
 
                                19、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩

                                          select s.sname,cname, score
                                           from j_student s,j_score sc,j_course c,j_teacher t
                                           where s.sno=sc.sno and sc.cno=c.cno and c.tno=t.tno
                                           and t.tname ='叶平'
                                            and sc.score=(select max(score)from j_score where cno = C.cno)
  

                                20、查询不同课程成绩相同的学生的学号、课程号、学生成绩

                                           select distinct A.sno, A.cno,B.score
                                           from j_score A ,j_score B
                                           where A.Score=B.Score and A.cno <>B.cno
                                           order by B.score

                                       

                                21、查询每门课程成绩最好的前两名的学生ID
                                          --以科目,按成绩给记录编号,然后取出编号<=2的,就是每科前两名

                                          SELECT *
                                            FROM j_score A
                                           WHERE (SELECT COUNT(*)
                                            FROM j_score B
                                           WHERE B.cno = A.cno
                                           AND B.score >= A.score) <= 2
                                          ORDER BY A.cno, A.score DESC

                                         

                               22、检索至少选修了5门课程的学生学号

                                  select sno from j_score group by sno having count(1) >= 5

                                       

                               23、查询没学过“叶平”老师讲授的任一门课程的学生姓名

                                     select sno, sname from j_student
                                     where sno not in(
                                       select sno from j_score where cno in
                                        (select a.cno from j_course a, j_teacher b where a.tno = b.tno and b.tname = '叶平'))

                               24、查询两门以上不及格课程的同学的学号及其平均成绩

                                      select
                                      sno,avg(score) 平均分,COUNT(sno) as 不及格课程
                                      from j_score
                                      where score<60
                                      group by sno
                                      having COUNT(sno)>2


                              25、查询最受欢迎的老师(选修学生最多的老师)


                                   select cno 课程ID, count(cno) 选修人数
                                    from j_score group by cno
                                   having count(cno) in (
                                  SELECT t.num from (select count(cno) num from j_score group by cno order by count(cno) desc LIMIT 0,1)t
                                    )
                                    order by 选修人数 desc

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 关与sql查询的题目及其答案

相关文章

  • 2017-05-11SQLServer 2008 R2中使用Cross apply统计最新数据和最近数据
  • 2017-05-11sql2005 数据库转为sql2000数据库的方法(数据导出导入)
  • 2017-05-11收缩数据库日志文件的方法(仅适用于mssql2005)
  • 2017-08-07SqlServer中对应的有外键的主表数据,无法truncate表的处理
  • 2017-05-11sql2005数据导出方法(使用存储过程导出数据为脚本)
  • 2017-05-11sql server2005实现数据库读写分离介绍
  • 2017-05-11数据库日常维护常用的脚本概述及部分测试
  • 2017-05-11使用SQLSERVER 2005/2008 递归CTE查询树型结构的方法
  • 2017-05-11SQLServer 查询当前服务器有多少连接请求的语句
  • 2017-05-11SQL Server使用一个语句块批量插入多条记录的三种方法

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 基于SQL2005 SQL2008 表结构信息查询升级版的详解(含外键信息)
    • 安装SQL2005时出现的版本变更检查SKUUPGRADE=1问题的解决方法
    • SQLServer2005 批量查询自定义对象脚本
    • SQL Server 在Management Studio中使用Web浏览器
    • Win2003系统下SQL Server 2008安装图解教程(详细图解)
    • SQL Server 2008 R2 应用及多服务器管理
    • SQL Server 2008安装图解(详细)
    • SQL2005 学习笔记 公用表表达式(CTE)
    • Sql Server安装出错,安装程序配置服务器失败的解决方法小结
    • 清理SQL Server 2008日志文件Cannot shrink log file 2 的解决方案

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有