SQL编程题复习(24/9/21)

练习题 x25

  • 10-95 在stu表 和 sc表 中查询所有学生的平均成绩,如果某学生尚未选修课程或成绩为空时,平均分计为0
  • 10-96 显示同时选修了1号与2号课程的同学的学号(`建议二刷`)
  • 10-97 显示2008年每门课程期末成绩的平均分(Avg),四舍五入包保留两位小数,显示课程号与平均分,并按分数降序排列(`left函数`)
  • 10-98 统计每位教师每周上课的次数(Num)及总时长(Len,每节课45分钟)(`length函数`)
  • 10-99 显示人数5人以上班级的班级编号和人数(Num),并按人数升序排列(`题有问题`)
  • 10-100 统计每个年龄段(Age)的人数(Num),按照年龄段升序排列
  • 10-101 显示计算机科学与技术系同学的名单,包括学号、姓名、性别、年龄(Age)、班级名称、入学年份(`分析需要使用的表`)
  • 10-102 显示选修了"数据库"课程的所有同学的学号、姓名(`分析需要使用的表`)
  • 10-103 删除未担任班导师并且未安排课程的教师记录(`建议二刷`)
  • 10-104 显示白云同学的班主任老师的姓名、联系电话(`分析需要使用的表`)
  • 10-105 显示白云同学所在院系的名称、办公地点与联系电话(`分析需要使用的表`)
  • 10-106 查询统计计算机科学与技术系每个同学已经修完的学分,显示学号、姓名、学分总数(Credit)(`分析需要使用的表`)
  • 10-107 查询显示张飞同学已修课程的课程号,课程名及期末成绩(`分析需要使用的表`)
  • 10-108 显示计算机科学与技术系、信息科学与技术系的班级名称、入学年份、班主任名称与联系电话(`分析需要使用的表`)
  • 10-109 显示2008年入学的同学的学号、姓名、班级名称(`分析需要使用的表`)
  • 10-110 显示已修数据库的同学的学号、姓名及期末成绩(`分析需要使用的表`)
  • 10-111 显示期末平均成绩75分以上的课程名称与期末平均成绩(Avg,结果保留两位小数`round函数`)(`分析需要使用的表`)
  • 10-112 显示期末平均成绩80分以上同学的学号、姓名与期末平均成绩(Avg,结果保留两位小数`round函数`)(`分析需要使用的表`)
  • 10-113 按照班级统计期末平均成绩,显示班级名称与平均成绩(Avg,结果保留两位小数`round函数`)(`分析需要使用的表`)
  • 10-114 按照学期统计计算机科学与技术系学生的期末平均成绩,显示学期名称与平均成绩(Avg,结果保留两位小数`round函数`)(`分析需要使用的表`)
  • 10-115 统计每个院系一周的课时数(Hours),显示院系名称与课时数(`分析需要使用的表`)
  • 10-116 显示没有选修任何课程的学生学号、姓名、班级名称(`分析需要使用的表`)
  • 10-117 显示上过李飞老师的课的学生的学号、姓名与联系电话(`分析需要使用的表`)
  • 10-118 显示一周6节课及以上的课程名称、学分(`分析需要使用的表`)
  • 10-119 显示一周6节课及以上班级名称(`分析需要使用的表`)

10-95 在stu表 和 sc表 中查询所有学生的平均成绩,如果某学生尚未选修课程或成绩为空时,平均分计为0

-- select stu.sno 学号,avg(if(not grade <=> null,grade,0)) 平均成绩
select stu.sno 学号,avg(ifnull(grade,0)) 平均成绩
from stu
left join sc on stu.sno=sc.sno
group by stu.sno-- ifnull(value1,value2)
-- ifnull 函数,value1 为真返回value1 否则返回value2-- if(value,value1,value2)
-- if 函数,value为真 返回value1 否则返回value2

10-96 显示同时选修了1号与2号课程的同学的学号(建议二刷

-- 方法一:自连接
-- select a.SId
-- from sc a,sc b
-- where a.SId=b.SId
-- and a.CId='1' and b.CId='2'-- 方法二:嵌套子查询
select SId
from sc
where CId= '1'
and SId in(select SIdfrom scwhere CId='2'
)-- 在一个表中 查询同时选择2门课的学生
-- 建议二刷

10-97 显示2008年每门课程期末成绩的平均分(Avg),四舍五入包保留两位小数,显示课程号与平均分,并按分数降序排列(left函数

select CId,round(avg(SCScore3),2) Avg
from sc
where left(SCTerm,4)=2008
group by CId
order by Avg desc-- 从左往右获取n 个字符,使用left(字符串,n)
-- 从右往左 同理

10-98 统计每位教师每周上课的次数(Num)及总时长(Len,每节课45分钟)(length函数

select TId,count(*) Num,sum(length(ITimeseg)*45) Len
from information
group by TId-- 上课时长和ITimeseg 有关
-- ITimeseg 的长度对应上了几节课 每节课45min
-- length(ITimeseg) 获取上了几节课

10-99 显示人数5人以上班级的班级编号和人数(Num),并按人数升序排列(题有问题

select GId,count(*) Num
from student
group by GId
having count(*) >5
order by Num asc-- 题目存在问题

10-100 统计每个年龄段(Age)的人数(Num),按照年龄段升序排列

-- studentselect year(now()) - year(SBdate) Age,count(*) Num
from student
group by year(now()) - year(SBdate)
order by Age-- 题目没给时间就用curdate() 或 now()

10-101 显示计算机科学与技术系同学的名单,包括学号、姓名、性别、年龄(Age)、班级名称、入学年份(分析需要使用的表

-- student grade deptselect SId,SName,SSexy,timestampdiff(year,SBdate,now()) Age,GName,GYear
from student,grade,dept
where student.GId=grade.GId
and grade.DId=dept.DId
and DName = '计算机科学与技术系'-- 分析需要使用的表
-- 计算年龄
-- 使用timestampdiff 更精确;使用year 只考虑年份 边界不一样会导致误差
-- timestampdiff(year/month/day,列名,now())
-- 时间戳差异函数

10-102 显示选修了"数据库"课程的所有同学的学号、姓名(分析需要使用的表

-- student course scselect student.SId,SName
from student,course,sc
where student.SId=sc.SId
and sc.CId=course.CId
and CName='数据库'-- 避免ambiguous 错误

10-103 删除未担任班导师并且未安排课程的教师记录(建议二刷

-- 为担任教师 grade.TId is null 
-- 未安排课程 TId not in informationdelete 
from teacher
where TId in(select TId from (select TId from teacher  where TId not in(     -- 1.教师不在grade表中TId不为空的人里select distinct TId from grade where TId is not null)and TId not in (     -- 2.不在information表中出现过的记录里select distinct TId from information)) temp 
)-- 不能对同一个表 边查询边修改,使用派生表解决

10-104 显示白云同学的班主任老师的姓名、联系电话(分析需要使用的表

-- student grade teacherselect TName,TTele
from student,grade,teacher
where student.GId=grade.GId
and grade.TId=teacher.TId
and SName='白云'-- 分析对此题有用的表

10-105 显示白云同学所在院系的名称、办公地点与联系电话(分析需要使用的表

-- student dept grade select DName,DAddr,DTele
from student,dept,grade
where student.GId=grade.GId
and grade.DId=dept.DId
and SName='白云'-- 分析对此题有用的表!!!
-- student 学生姓名
-- dept 系名、系编号
-- grade 系编号、班级编号

10-106 查询统计计算机科学与技术系每个同学已经修完的学分,显示学号、姓名、学分总数(Credit)(分析需要使用的表

-- dept course student sc gradeselect student.SId,SName,sum(CCredit) Credit
from dept,course,student,sc,grade
where student.GId=grade.GId
and grade.DId=dept.DId
and course.CId=sc.CId
and sc.SId=student.SId
and DName = '计算机科学与技术系'
group by student.SId,SName-- 分析对此题有用的表
-- 学号、姓名student
-- 学分course
-- 系别 grade(系编号)、dept(系名)

10-107 查询显示张飞同学已修课程的课程号,课程名及期末成绩(分析需要使用的表

-- student sc courseselect sc.CId,CName,SCScore3
from student,sc,course
where student.SId=sc.SId
and sc.CId=course.CId
and SName='张飞'-- 排除干扰表,分析出对此题有用的表
-- 多表连接(等值连接)

10-108 显示计算机科学与技术系、信息科学与技术系的班级名称、入学年份、班主任名称与联系电话(分析需要使用的表

-- dept grade teacherselect GName,GYear,TName,TTele
from dept,grade,teacher
where dept.DId=grade.DId
and grade.TId=teacher.TId
and DName in('计算机科学与技术系','信息科学与技术系')-- 分析对此题有用的表
-- 多表连接查询;
-- 也可以嵌套子查询

10-109 显示2008年入学的同学的学号、姓名、班级名称(分析需要使用的表

-- grade studentselect SId,SName,GName
from grade,student
where grade.GId=student.GId
and GYear = 2008-- 判断相等?
-- 使用where a = b

10-110 显示已修数据库的同学的学号、姓名及期末成绩(分析需要使用的表

-- student sc courseselect student.SId,SName,SCScore3
from sc,course,student
where course.CId=sc.CId
and sc.SId=student.SId
and course.CName='数据库'-- 分析对此题有用的表

10-111 显示期末平均成绩75分以上的课程名称与期末平均成绩(Avg,结果保留两位小数round函数)(分析需要使用的表

-- course scselect CName,round(avg(SCScore3),2) Avg
from course,sc
where course.CId=sc.CId
group by CName
having avg(SCScore3)>75-- 分析此题需要用的表
-- 保留两位小数 round(x,2)

10-112 显示期末平均成绩80分以上同学的学号、姓名与期末平均成绩(Avg,结果保留两位小数round函数)(分析需要使用的表

-- student scselect student.SId,SName,round(avg(SCScore3),2) Avg
from student,sc
where student.SId=sc.SId
group by student.SId,SName
having avg(SCScore3)>80-- SQL执行顺序
-- from -> on -> left/right join -> where ->
-- group by -> having -> select -> distinct ->
-- order by -> limit

10-113 按照班级统计期末平均成绩,显示班级名称与平均成绩(Avg,结果保留两位小数round函数)(分析需要使用的表

-- grade sc studentselect GName,round(avg(SCScore3),2) Avg
from grade,sc,student
where grade.GId=student.GId
and student.SId=sc.SId
group by GName-- 排除干扰表,分析对此题有用的表

10-114 按照学期统计计算机科学与技术系学生的期末平均成绩,显示学期名称与平均成绩(Avg,结果保留两位小数round函数)(分析需要使用的表

-- 系、成绩、学期名称
-- dept sc grade student
select SCTerm,round(avg(SCScore3),2) Avg
from dept,sc,grade,student
where dept.DId=grade.DId
and grade.GId=student.GId
and student.SId=sc.SId
and dept.DName='计算机科学与技术系'
group by SCTerm-- 分析对此题有用的表
-- 输出样例保留了 两位小数
-- round(avg(分数),2)

10-115 统计每个院系一周的课时数(Hours),显示院系名称与课时数(分析需要使用的表

-- dept course informationselect dept.DName,sum(length(ITimeseg)) Hours
from dept,course,information
where dept.DId=course.DId
and course.CId=information.CId
group by dept.DName-- ITimeseg 和课时有关
-- 课时数计算sum(length(ITimeseg));
-- 分析对此题有用的表,多表连接
-- 建议二刷

10-116 显示没有选修任何课程的学生学号、姓名、班级名称(分析需要使用的表

-- student grade scselect SId,SName,GName
from student,grade
where grade.GId=student.GId
and SId not in (select distinct SIdfrom sc
)-- 分析对此题有用的表
-- 后台有很多 测试数据
-- 建议二刷

10-117 显示上过李飞老师的课的学生的学号、姓名与联系电话(分析需要使用的表

-- student  sc teacher information
select distinct student.SId,student.SName,student.STele
from student,sc,teacher,information
where student.SId=sc.SId
and sc.CId=information.CId
and information.TId=teacher.TId
and teacher.TId in(select TId from teacher where TName='李飞'
)-- 题目给了很多表,考虑多表连接而不是简单的嵌套子查询;
-- 分析对此题有用的表,等值连接
-- 建议二刷

10-118 显示一周6节课及以上的课程名称、学分(分析需要使用的表

-- course informationselect CName,CCredit
from course
where CId in (select CId          -- 1.课程数量大于6的课程序号from informationgroup by CIdhaving sum(length(ITimeseg))>=6
)-- 嵌套子查询
-- length函数,求字符串长度
-- 分析需要用到的表
-- 建议二刷

10-119 显示一周6节课及以上班级名称(分析需要使用的表

-- grade informationselect GName
from grade
where GId in (select GId   -- 1.查询课程长度大于6的班级编号from informationgroup by GIdhaving sum(length(ITimeseg))>=6
)-- 嵌套子查询
-- length函数,求字符串长度
-- 建议二刷

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/429156.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp uview扩展u-picker支持日历期间 年期间 月期间 时分期间组件

uniapp uview扩展u-picker支持日历期间 年期间 月期间 时分期间组件 日历期间、年期间、月期间及时分期间组件在不同的应用场景中发挥着重要的作用。这些组件通常用于表单、应用程序或网站中&#xff0c;以方便用户输入和选择特定的日期和时间范围。以下是这些组件的主要作用&a…

C++:日期类的实现

目录 一、前言 二、头文件 三、各个函数的实现 打印、检查日期及获取日期 、、-、-、 、<、<、>、>、 &#xff01; 日期-日期 >>、<< 一、前言 前面几篇讲了关于类和对象的一些知识&#xff0c;本篇就来实现一下前面用到的日期类。 二、头文…

TryHackMe 第3天 | Pre Security (中)

该学习路径讲解了网络安全入门的必备技术知识&#xff0c;比如计算机网络、网络协议、Linux命令、Windows设置等内容。上一篇中简短介绍了计算机网络相关的知识&#xff0c;本篇博客将记录 网络协议 部分。 How the web works? DNS in detail DNS (Domain name system&…

Java面试篇-AOP专题(什么是AOP、AOP的几个核心概念、AOP的常用场景、使用AOP记录操作日志、Spring中的事务是如何实现的)

文章目录 1. 什么是AOP2. AOP的几个核心概念3. AOP的常用场景4. 使用AOP记录操作日志4.1 准备工作4.1.1 引入Maven依赖4.1.2 UserController.java4.1.3 User.java4.1.4 UserService.java 4.2 具体实现&#xff08;以根据id查询用户信息为例&#xff09;4.2.1 定义切面类&#x…

SkyWalking 环境搭建部署

架构简介 skywalking agent : 和业务系统绑定在一起,负责收集各种监控数据skywalking oapservice : 是负责处理监控数据的,比如接受skywalking agent的监控数据,并存储在数据库中;接受skywalking webapp的前端请求,从数据库查询数据,并返回数据给前端。Skywalking oapserv…

华为HarmonyOS地图服务 7- 在地图上绘制标记

场景介绍 本章节将向您介绍如何在地图的指定位置添加标记以标识位置、商家、建筑等。 点标记用来在地图上标记任何位置,例如用户位置、车辆位置、店铺位置等一切带有位置属性的事物。Map Kit提供的点标记功能(又称 Marker)封装了大量的触发事件,例如点击事件、长按事件、…

【RabbitMQ】消息分发、事务

消息分发 概念 RabbitMQ队列拥有多个消费者时&#xff0c;队列会把收到的消息分派给不同的消费者。每条消息只会发送给订阅该队列订阅列表里的一个消费者。这种方式非常适合扩展&#xff0c;如果现在负载加重&#xff0c;那么只需要创建更多的消费者来消费处理消息即可。 默…

linux网络编程5

24.9.21学习目录 一.TCP1.TCP流程2.TCP相关函数3.三次握手 一.TCP 1.TCP流程 服务器流程&#xff1a; 创建套接字socket&#xff08;&#xff09;将套接字与服务器网络信息结构体绑定bind&#xff08;&#xff09;将套接字设置为监听状态listen&#xff08;&#xff09;阻塞等…

进程间的通信4 共享内存

共享内存 1.共享内存简介 共享内存是将分配的物理空间直接映射到进程的用户虚拟地址空间中&#xff0c;减少数据在内核空间缓存共享内存是一种效率较高的进程间通讯的方式在 Linux 系统中通过 ipcs -m 查看所有的共享内存 共享内存模型图 2.共享内存的创建 1.函数头文件 #…

Java算法专栏

专栏导读 在当今这个技术日新月异的时代&#xff0c;Java算法作为软件开发的核心&#xff0c;对于提升程序性能和解决复杂问题至关重要。本“Java算法”专栏旨在帮助读者深入理解Java编程语言中的算法原理和应用&#xff0c;通过实战案例和深入分析&#xff0c;使读者能够掌握…

Java汽车销售管理

技术架构&#xff1a; springboot mybatis Mysql5.7 vue2 npm node 功能描述&#xff1a; 针对汽车销售提供客户信息、车辆信息、订单信息、销售人员管理、财务报表等功能&#xff0c;提供经理和销售两种角色进行管理 效果图&#xff1a;

Python基础学习(3)

目录 一&#xff0c;函数 1&#xff0c;函数的定义 2&#xff0c;函数的参数 1&#xff0c;默认值 2&#xff0c;传参 3&#xff0c;返回值 4&#xff0c;变量的作用域 5&#xff0c;函数的调用 二&#xff0c;常用数据结构 1&#xff0c;列表 列表的定义 列表的特性…

【Geoserver使用】REST API调用(工作空间部分)

文章目录 前言一、Geoserver REST API(GeoServer Workspace)二、GeoServer Workspace接口使用1.GET请求 /workspaces2.POST请求 /workspaces3.GET请求 /workspaces/{workspaceName}4.PUT /workspaces/{workspaceName}5.DELETE /workspaces/{workspaceName} 总结 前言 根据Geos…

C++ | Leetcode C++题解之第423题从英文中重建数字

题目&#xff1a; 题解&#xff1a; class Solution { public:string originalDigits(string s) {unordered_map<char, int> c;for (char ch: s) {c[ch];}vector<int> cnt(10);cnt[0] c[z];cnt[2] c[w];cnt[4] c[u];cnt[6] c[x];cnt[8] c[g];cnt[3] c[h] - …

YOLOv10 简介

YOLOv10&#xff0c;由清华大学的研究人员基于 Ultralytics Python 包构建&#xff0c;引入了一种全新的实时目标检测方法&#xff0c;该方法解决了以往 YOLO 版本中后处理和模型架构方面的不足。通过消除非极大值抑制&#xff08;NMS&#xff09;并优化各种模型组件&#xff0…

【解决】chrome 谷歌浏览器,鼠标点击任何区域都是 Input 输入框的状态,能看到输入的光标

chrome 谷歌浏览器&#xff0c;鼠标点击任何区域都是 Input 输入框的状态&#xff0c;能看到输入的光标 今天打开电脑的时候&#xff0c;网页中任何文本的地方&#xff0c;只要鼠标点击&#xff0c;就会出现一个输入的光标&#xff0c;无论在哪个站点哪个页面都是如此。 我知道…

十四、运算放大电路

运算放大电路 1、理想运算放大器的概念。运放的输入端虚拟短路、虚拟断路之间的区别; 2、反相输入方式的运放电路的主要用途&#xff0c;以及输入电压与输出电压信号的相位 3、同相输入方式下的增益表达式(输入阻抗、输出阻抗)

Redis-01 入门和十大数据类型

Redis支持两种持久化方式&#xff1a;RDB持久化和AOF持久化。 1.RDB持久化是将Redis的数据以快照的形式保存在磁盘上&#xff0c;可以手动触发或通过配置文件设置定时触发。RDB保存的是Redis在某个时间点上的数据快照&#xff0c;可以通过恢复RDB文件来恢复数据。 2.AOF持久化…

55. QTableWidget的基本使用

1. 说明 在软件界面开发中,基本上离不开数据的展示以供客户查看一些比较关注的信息,比如公司做一个员工个人信息管理系统,需要一个界面能够展示员工个人基本信息,实现这种效果可以采用多种形式,其中比较简单的一种是使用QT提供的QTableWidget控件,这个控件已经封装了一些…

LeetCode 面试经典150题 190.颠倒二进制位

复习知识&#xff1a;正数的原码、反码、补码相同&#xff0c;负数的反码在其原码的基础上, 符号位不变&#xff0c;其余各个位取反&#xff0c;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后1 (即在反码的基础上1)。 题目&#xff1a;颠倒给定的 32 位无符号…