SQL巩固测试题

注意:为了更好地学习效果,第三部分的测试题应当在不查询sql语法手册的前提下独立完成。

1.找出订单销售额前五的订单是经由哪家运货商运送的。
2.查询海鲜类别最大的一笔订单。
3.计算销量前10位的订单明细,结果集返回订单ID,订单日期,公司名称,发货日期,销售额,并排序
4.查询供应商中能够供应的产品样数第三多的供应商。
5.查询产品类别中包含的产品数量最少的类别。
6.找出所有的订单中经由哪家运货商运货次数最多。
7.查询分数大于整体平均分的学生信息
8.查询学过的科目数跟学号为02一模一样的学生
9.查询销售额大于平均销售额的订单ID,销售额
10.查询既学过01课程又学过02 课程的学号和姓名
11.查询01课程比02 课程成绩高的所有学生的学号

12.查有成绩的学生信息

13.查询没有学全所有课程的同学的信息

14.查询没有学全所有课程的同学的姓名、学号、性别、选修课程名称、授课教师名称以及该课程的分数
15.查询只学过01和02这两门课程的学号和姓名
16.查询只有02课程没学过,其他课程均学过的学生信息
17.查询学过 01 课程但没学过02课程的情况
18.查询和01号的同学学习的课程完全相同的其他同学的信息
19.查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩
20.查询分数低于60的记录,统计这些记录各科课程的平均成绩,并且输出各科课程的教师
21.检索” 01 “课程分数小于 60,按分数降序排列的学生信息

22.检索学过语文课程的同学信息,按分数降序排列,若分数相同则按照学号排序,取结果的前三条
23.查询任何一门课程成绩在 70 分以上的学生的姓名、所学所有课程名称和该课程的分数

24.查询所教课程平均分大于30分的教师姓名、课程名、成绩、和课程的学习人数
25.按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩

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

27.查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩

28.查询出只选修两门课程的学生学号和姓名

29.查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 0 )

30.查询「李」姓老师所教学生的总人数和总成绩
31.查询老师作为班主任的学生人数和所教学生的平均成绩和作为授课老师教授的学生人数和平均成绩。
32.查询每一个班级的学生数量和平均成绩,按照班级号升序,平均成绩降序的方式
33.(1)查询studenta表与studentb表中的sname,cno,并且把两张表的记录整合到一起,要求保留两张表的所有记录
(2)查询studenta表与studentb表中的sname,cno,并且把两张表的记录整合到一起,要求去重复并且排序
(3)查询studenta表与studentb表中的sname,cno,并且把两张表的记录整合到一起,要求剔除两表公有的记录
(4)查询studenta表与studentb表中的sname,cno,并且把两张表的记录整合到一起,要求保留两表公有的记录
34.查询学过「张三」老师授课所有课程的同学的信息
35.查询不是张三老师班级的所有学生信息

36.查询没学过”张三”老师讲授的任一门课程的学生姓名

37.查询每个班级的男生、女生人数

38.(1)查询课程不同成绩相同的学生的学生编号、课程编号、学生成绩
(2)查询同名同性学生名单,并统计同名人数

(3)查询每个班级同年同月的学生信息和总分成绩
39.有两张表T1\T2,其中T1是用户表,有200个男和100个女,男生中购买订单的有150人,其中100个购买2单,50个购买3单,50个男的什么都没买,女生中购买订单的有80人,20个女的什么都没买,女生,60个购买4单,20个购买5单T2是订单表 有1000个订单 有的订单不是T1的用户购买的,分别计算结果有多少条数据
(1)t1 inner join t2 on t1.人=t2.人
(2)t1 inner join t2 on t1.人=t2.人 and t1.性别=’女’ ?
(3)t1 left join t2 on t1.人=t2.人 and t1.性别=’女’ ?
(4)t1 right join t2 on t1.人=t2.人 and t1.性别=’女’ ?
(5)t1 full join t2 on t1.人=t2.人 ?
(6)t1 full join t2 on t1.人=t2.人 and t1.性别=’女’?
(7)t1 full join t2 on t1.人=t2.人 and t1.性别=’女’ where t1.人 is null ?
(8)t1 inner join t2 on t1.人=t2.人 or t1.性别=’女’?
40.查询学过课程为01和02但没学过03的学生信息(要求使用表关联)

专项提炼
41 .
(1)查询每门功成绩最好的前两名

(2)查询每个班级总分最好的前两名
42.查询每类产品中销售额(单价*库存量)最高的产品,如果有多个取单价最低的那个,结果输出,类别ID,产品ID,排名,销售额,单价

  1. 查询学生的总成绩,并进行排名,总分相同时名次相同,且跳过原有的名次(1,1,3,4)
  2. 查询学生的总成绩,并进行排名,总分相同时名次相同,且不跳过原有的名(1,1,2,3)
  3. 查询各年月累积销售额,结果输出年月,累积销售额
  4. (1)统计各科成绩各分数段人数:课程编号,课程名称,[100-86],[85-71] ,[70-61] ,[60-0] 及所占百分比

(2)查询各科成绩最高分、最低分和平均分:
以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率
及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90
并输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列
(3)查询学生的学号,姓名和总成绩,和评价(总成绩大于270的为A,240~269的为B,其他的为C,分数为0 的设置为D)

47.查询各个人员的联系地址,如果地址为空则选择他公司的地址(gaddress),公司地址也为空,选择配偶的地址(paddress),结果输出tid,联系人地址(表使用dd_47)

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

49.查询最近2个月过生日的学生信息(比如张三7月份过生日,那么5、6、7、8、9都包括在最近两个月内)

  1. (1)查询各学生的年龄
    (2)查询各个班级各个学生的年龄的人数

51.
(1)查询本周过生日的学生

(2)查询下月过生日的学生

52.
(1)查询生日是当月第一天的学生的学生信息
(2)查询生日是当月最后一天的学生信息
(3)查询每个季度过生日的学生人数
53.求出上月本日的日期、星期和季度(显示格式xxxx年xx季度xx月xx日星期x,如2020年第三季度07月11日星期六)
54.
(1)查询所有老师的信息,姓名去掉空格,并增加一列显示x老师,x是姓名的第一个字(如张三,张老师)
(2)输出学生的姓名和性别。将所有同学的名字隐藏只保留姓氏,而名字用号代替,名字长度超过3位数的姓氏认为是一个。性别为男的,设置为小哥哥,性别为女的设置为小姐姐。(例如张三,张韩梅梅,韩**)

55.求出每个学生信息,返回结果为一列(例:赵雷,男,1990年01月01日生,星期一)

56.筛选出区号为三位的客户,并把电话的格式转换成’***-72035188’
57.对产品表里面的供应商id将1变成2,2变成1,3变成4,4变成3依此类推跟换所有
58.将本字符串中的所有空格去除掉。
‘ kg a c b ww ‘
59.将是订单表中否已付里面为true改为首字母大写,结果输出订单ID,是否已付
60.怎么把这样一个表
(使用brith表)
year month amount

1991 1 1.1

1991 2 1.2

1991 3 1.3

1991 4 1.4

1992 1 2.1

1992 2 2.2

1992 3 2.3

1992 4 2.4

查成这样一个结果

year m1 m2 m3 m4

1991 1.1 1.2 1.3 1.4

1992 2.1 2.2 2.3 2.4

作者:严锋  创建时间:2023-11-03 09:53
最后编辑:严锋  更新时间:2023-11-03 09:54