MySQL45道练习题

作业需要数据表SQL语句已给

986efecee4084e6f8b44c13030f9f398.png

 1. 查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数

select * from Student RIGHT JOIN (
    select t1.SId, class1, class2 from
          (select SId, score as class1 from sc where sc.CId = '01')as t1, 
          (select SId, score as class2 from sc where sc.CId = '02')as t2
    where t1.SId = t2.SId AND t1.class1 > t2.class2
)r on Student.SId = r.SId;

 1.1 查询同时存在" 01 "课程和" 02 "课程的情况

select * from 
    (select * from sc where sc.CId = '01') as t1, 
    (select * from sc where sc.CId = '02') as t2
where t1.SId = t2.SId;

1.2 查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null )

select * from 
(select * from sc where sc.CId = '01') as t1
left join 
(select * from sc where sc.CId = '02') as t2
on t1.SId = t2.SId;

1.3 查询不存在" 01 "课程但存在" 02 "课程的情况

select * from sc
where sc.SId not in (
    select SId from sc 
    where sc.CId = '01'
) and sc.CId= '02';

2.查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩

select student.SId,sname,ss from student,(
    select SId, AVG(score) as ss from sc  
    group by SId 
    having AVG(score)> 60
    )r where student.sid = r.sid;

3.查询在 SC 表存在成绩的学生信息

select distinct student.*
from student,sc
where student.SId=sc.SId

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

select s.sid, s.sname,r.coursenumber,r.scoresum
from (
    (select student.sid,student.sname from student)s 
    left join 
    (select sc.sid, sum(sc.score) as scoresum, count(sc.cid) as coursenumber from sc group by sc.sid)r 
    on s.sid = r.sid);

 

4.1 查有成绩的学生信息

select * from student where exists (select sc.sid from sc where student.sid = sc.sid);

5.查询「李」姓老师的数量

select count(*) from teacher where tname like '李%';

6.查询学过「张三」老师授课的同学的信息

select student.* from student,teacher,course,sc
where 
    student.sid = sc.sid 
    and course.cid=sc.cid 
    and course.tid = teacher.tid 
    and tname = '张三';

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

select * from student
where student.sid not in (
  select sc.sid from sc
  group by sc.sid
  having count(sc.cid)= (select count(cid) from course));

8.查询至少有一门课与学号为" 01 "的同学所学相同的同学的信

select * from student 
where student.sid in (
    select sc.sid from sc 
    where sc.cid in(
        select sc.cid from sc 
        where sc.sid = '01'));

9.查询和" 01 "号的同学学习的课程 完全相同的其他同学的信息

select * from student where sid in(
select a.sid from (select sid,group_concat(cid order by cid) as courses 
from sc group by sid) as a
inner join (select sid,group_concat(cid order by cid) as courses 
from sc group by sid having sid='01') as b
on a.sid != 1 and a.courses = b.courses);

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

select * from student
where student.sid not in(
    select sc.sid from sc,course,teacher 
    where
        sc.cid = course.cid
        and course.tid = teacher.tid
        and teacher.tname= "张三");

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

select student.sid, student.Sname,b.avg
from student right join
(select sid, AVG(score) as avg from sc
    where sid in (
              select sid from sc 
              where score<60 
              group by sid 
              having count(score)>1)
    group by sid) b on student.sid=b.sid;

12.检索" 01 "课程分数小于 60,按分数降序排列的学生信息

select student.*, sc.score from student, sc
where student.sid = sc.sid
and sc.score < 60
and cid = "01"
order by sc.score desc;

13.按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩

select *  from sc 
left join (
    select sid,avg(score) as avscore from sc 
    group by sid
    )r 
on sc.sid = r.sid
order by avscore desc;

14.查询各科成绩最高分、最低分和平均分:

以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率;及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90;要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列

select 
sc.CId ,
max(sc.score)as 最高分,
min(sc.score)as 最低分,
AVG(sc.score)as 平均分,
count(*)as 选修人数,
sum(case when sc.score>=60 then 1 else 0 end )/count(*)as 及格率,
sum(case when sc.score>=70 and sc.score<80 then 1 else 0 end )/count(*)as 中等率,
sum(case when sc.score>=80 and sc.score<90 then 1 else 0 end )/count(*)as 优良率,
sum(case when sc.score>=90 then 1 else 0 end )/count(*)as 优秀率 
from sc
GROUP BY sc.CId
ORDER BY count(*)DESC, sc.CId ASC

15.按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺

SELECT *,row_number() over (PARTITION BY cid ORDER BY score DESC) AS '排名'FROM sc;

15.1 按各科成绩进行排序,并显示排名, Score 重复时合并名次

select *,
case when @sco=score then @rank else @rank:=@rank+1 end as rn,
@sco:=score
from sc,(select @rank:=0,@sco:=NULL) t
order by score desc;

16.查询学生的总成绩,并进行排名,总分重复时保留名次空缺

select a.*,
@rank:=if(@sco=scos,'',@rank+1) as rn,
@sco:=scos
from
(select sid,sum(score) as scos from sc
group by sid order by scos desc) a,
(select @rank:=0,@sco:=NULL) b;

16.1 查询学生的总成绩,并进行排名,总分重复时不保留名次空缺

select a.*,
@rank:=if(@sco=scos,@rank,@rank+1) as rn,
@sco:=scos
from
(select sid,sum(score) as scos from sc
group by sid order by scos desc) a,
(select @rank:=0,@sco:=NULL) b;

17.统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] 及所占百分比

select course.cname, course.cid,
sum(case when sc.score<=100 and sc.score>85 then 1 else 0 end) as "[100-85]",
sum(case when sc.score<=85 and sc.score>70 then 1 else 0 end) as "[85-70]",
sum(case when sc.score<=70 and sc.score>60 then 1 else 0 end) as "[70-60]",
sum(case when sc.score<=60 and sc.score>0 then 1 else 0 end) as "[60-0]"
from sc left join course on sc.cid = course.cid group by sc.cid;

18.查询各科成绩前三名的记录

select * from sc
where (
select count(*) from sc as a 
where sc.cid = a.cid and sc.score<a.score 
)< 3 order by cid asc, sc.score desc;

19.查询每门课程被选修的学生数

select cid, count(sid) from sc  group by cid;

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

select student.SId,student.Sname
from sc,student
where student.SId=sc.SId  
group by sc.SId
having count(*)=2;

21.查询男生、女生人数

select ssex, count(*) from student group by ssex;

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

select * from student  where student.Sname like '%风%';

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

select sname, count(*) from student group by sname having count(*)>1;

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

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

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

select sc.cid, course.cname, AVG(SC.SCORE) as average from sc, course
where sc.cid = course.cid group by sc.cid order by average desc,cid asc;

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

select student.sid, student.sname, AVG(sc.score) as aver from student, sc
where student.sid = sc.sid group by sc.sid having aver > 85;

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

select student.sname, sc.score from student, sc, course
where student.sid = sc.sid and course.cid = sc.cid and course.cname = "数学" and sc.score < 60;

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

select student.sname, cid, score from student left join sc on student.sid = sc.sid;

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

select student.sname, course.cname,sc.score from student,course,sc
where sc.score>70 and student.sid = sc.sid and sc.cid = course.cid;

30.查询不及格的课程

select distinct sc.CId from sc where sc.score <60;

31.查询课程编号为 01 且课程成绩在 80 分以上的学生的学号和姓名

select student.sid,student.sname from student,sc
where cid="01" and score>=80 and student.sid = sc.sid;

32.求每门课程的学生人数

select sc.cid,count(*) as 学生人数 from sc group by sc.cid;

33.成绩不重复,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩

select student.*, sc.score, sc.cid from student, teacher, course,sc 
where teacher.tid = course.tid
and sc.sid = student.sid
and sc.cid = course.cid
and teacher.tname = "张三"
order by score desc
limit 1;

34.成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩

select student.*, sc.score, sc.cid from student, teacher, course,sc 
where teacher.tid = course.tid
and sc.sid = student.sid
and sc.cid = course.cid
and teacher.tname = "张三"
and sc.score = (
    select Max(sc.score) 
    from sc,student, teacher, course
    where teacher.tid = course.tid
    and sc.sid = student.sid
    and sc.cid = course.cid
    and teacher.tname = "张三"
);

35.查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩

select  a.cid, a.sid,  a.score from sc as a
inner join 
sc as b
on a.sid = b.sid
and a.cid != b.cid
and a.score = b.score
group by cid, sid;

36.查询每门功成绩最好的前两名

select a.sid,a.cid,a.score from sc as a left join sc as b 
on a.cid = b.cid and a.score<b.score
group by a.cid, a.sid having count(b.cid)<2 order by a.cid;

37.统计每门课程的学生选修人数(超过 5 人的课程才统计)。

select sc.cid, count(sid) as cc from sc group by cid having cc >5;

38.检索至少选修两门课程的学生学号

select sid, count(cid) as cc from sc group by sid having cc>=2;

39.查询选修了全部课程的学生信息

select student.* from sc ,student where sc.SId=student.SId group by sc.SId having count(*) = (select distinct count(*) from course )

40.查询各学生的年龄,只按年份来算

select *, (year(now()) - year(sage)) as age from student;

41.按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一

select *, timestampdiff(YEAR,sage,NOW()) as age from student;

42.查询本周过生日的学生

select * from student where WEEKOFYEAR(student.Sage)=WEEKOFYEAR(CURDATE());

43.查询下周过生日的学生

select * from student where WEEKOFYEAR(student.Sage)=WEEKOFYEAR(CURDATE())+1;

44.查询本月过生日的学生

select * from student where MONTH(student.Sage)=MONTH(CURDATE());

45.查询下月过生日的学生

select * from student where MONTH(student.Sage)=MONTH(CURDATE())+1;

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

『踩坑记录』Ubuntu安装python3-pip报错Package ‘python3-pip‘ has no installation candidate

文章目录 问题描述解决方法&#xff1a;添加apt的Universe库完 问题描述 sudo apt update;sudo aptupgrade后安装python3-pip仍然失败&#xff0c;报错&#xff1a; Package python3-pip is not available, but is referred to by another package. This may mean that the p…

环形链表的约瑟夫问题

前言 大家好呀&#xff0c;我是Humble&#xff0c;今天要分享的内容是环形链表的约瑟夫问题 说到链表&#xff0c;约瑟夫问题&#xff08;约瑟夫环&#xff09;绝对是一个经典的算法题&#xff0c;下面就让我们一起看一下吧~ 正文开始前&#xff0c;我们先看一个小小的故事&a…

视频监控平台EasyCVR增加fMP4流媒体视频格式及其应用场景介绍

近期我们在视频监控管理平台EasyCVR系统中新增了HTTP-FMP4播放协议&#xff0c;今天我们就来聊聊该协议的特点和应用。 fMP4&#xff08;Fragmented MPEG-4&#xff09;是基于MPEG-4 Part 12的流媒体格式&#xff0c;是流媒体的一项重要技术&#xff0c;因为它能通过互联网传送…

如何正确使用RC滤波网络

众所周知&#xff0c;最有效的滤波电路应靠近噪声源放置&#xff0c;滤波的作用是对噪声电流进行及时有效地阻止和转移&#xff0c;实际设计中&#xff0c;工程师经常使用高的串联阻抗&#xff08;电阻、电感和铁氧体&#xff09;阻止电流&#xff0c;并使用低的并联阻抗&#…

怎样使用崭新的硬盘

新买的一块硬盘&#xff0c;接到电脑上&#xff0c;打开机器&#xff0c;却找不到新的硬盘&#xff0c;怎么回事&#xff1f;新的硬盘是坏的么&#xff1f;怎样才能把新硬盘用起来&#xff1f; 可能有几种原因导致您的电脑无法识别新的硬盘。以下是一些建议的解决方法&#xff…

一个处理Range List的面试题解法

大纲 题目解法Rangeaddremove ToolsRangeListaddremove 代码 最近看到一个比较有意思的面试题。题目不算难&#xff0c;但是想把效率优化做好&#xff0c;也没那么容易。 我们先看下题目 题目 // Task: Implement a class named RangeList // A pair of integers define a ra…

解决 ssh: connect to host github.com port 22: Connection timed out

问题 今天使用git克隆github上的代码时&#xff0c;一直报错 原以为是公钥过期了&#xff0c;就尝试修改配置公钥&#xff0c;但是尝试了几次都不行&#xff0c;最终在博客上找到了解决方案&#xff0c;在次记录一下&#xff0c;以备不时之需 解决ssh-connect-to-host-github…

【实战教程】一文读懂防火墙本地Portal认证:让你的网络更安全!

往期精彩 【实战教程】防火墙设备登录配置&#xff0c;让你轻松掌握网络安全&#xff01;【实战教程】防火墙安全区域与策略实战指南&#xff1a;让你的网络安全防护如虎添翼&#xff01;【实战教程】防火墙常见NAT技术&#xff0c;让你一次看个够&#xff01;【实战教程】从零…

机器学习之聚类-2D数据类别划分

无监督学习&#xff08;Unsupervised Learning&#xff09; 机器学习的一种方法&#xff0c;没有给定事先标记过的训练示例&#xff0c;自动对输入的数据进行分类或分群。 方式一&#xff1a;站着或坐着 方式二&#xff1a;全身或半身 方式三&#xff1a;蓝眼球或不是蓝眼球 …

RocketMQ-Windows版本安装

RocketMQ-Windows版本安装 1.环境准备 JDK和maven需要先安装好&#xff0c;我这里使用的JDK1.8版本 Maven 3.8.6版本。需要注意的是&#xff0c;这里配置java时需要指定JAVA_HOME环境变量 RokectMQ才能正常启动。 2.下载RocketMQ 官网下载: https://rocketmq.apache.org/z…

苹果手机怎么还原?本文教你一键操作!

苹果手机作为一系列备受瞩目的智能设备&#xff0c;以其流畅的用户体验和出色的性能而备受用户喜爱。然而&#xff0c;在某些情况下&#xff0c;例如设备出现故障、需要清理空间、或者想要将手机还原至出厂设置&#xff0c;用户可能会考虑进行苹果手机的还原。在本文中&#xf…

OpenCV书签 #余弦相似度的原理与相似图片/相似文件搜索实验

1. 介绍 余弦相似度&#xff08;Cosine Similarity&#xff09;&#xff0c;又称为余弦相似性&#xff0c;是通过计算两个向量的夹角余弦值来评估他们的相似度。余弦相似度仅仅与向量的指向方向相关&#xff0c;与向量的长度无关&#xff0c;它将向量根据坐标值绘制到向量空间…

HelpLook支持同步企微组织架构,管理内部知识库更方便!

内部知识库是企业用来集中存储、管理和分享内部信息的系统。它类似一个知识仓库&#xff0c;员工可以在这里查找和获取所需的资料、流程和策略。同时保护公司的核心知识不会因员工的流动而流失&#xff0c;也能推动公司的创新和决策的精准性&#xff0c;对于公司的日常运营和长…

Leetcode—2788. 按分隔符拆分字符串【简单】(stringstream的应用)

2023每日刷题&#xff08;八十六&#xff09; Leetcode—2788. 按分隔符拆分字符串 实现代码 class Solution { public:vector<string> splitWordsBySeparator(vector<string>& words, char separator) {vector<string> res;for(auto word: words) {st…

性能优化-HVX架构简介

来自 「发表于知乎专栏《移动端算法优化》」 本文主要介绍Hexagon DSP的HVX技术&#xff0c;旨在通过简单的语言讲清HVX技术。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;高性能&#xff08;HPC&#xff09;开…

【MySQL索引特性】

文章目录 1. 没有索引&#xff0c;可能会有什么问题2. 认识磁盘2.1 MySQL与存储2.2 先来研究一下磁盘&#xff1a;2.3 磁盘随机访问(Random Access)与连续访问(Sequential Access) 3. MySQL 与磁盘交互基本单位4. 建立共识5. 索引的理解5.1 建立测试表5.2 插入多条记录5.3 查看…

宝马X5原车氙气灯升级采用搭载FP7208升压LED驱动模块的双光透镜,效果立竿见影

目录 一、LED车灯的内部组成结构 二、FP7208驱动板详解 三、FP7208的优势 1.模拟和数字调光、无频闪 2.拥有多种功能&#xff0c;有效提高LED灯珠寿命 结论&#xff1a; 在夜晚的道路上&#xff0c;车灯的亮度对于驾驶安全至关重要。然而&#xff0c;许多车主常常对汽车灯…

网络组件、设备和关系网络图【推荐】

目录 网络上的设备&#xff1a; 设备和台式计算机&#xff1a; 防火墙&#xff1a; 服务器&#xff1a; 集线器和交换机&#xff1a; 路由器&#xff1a; 调制解调器和无线接入点调制解调器&#xff1a; 无线接入点&#xff1a; 网络架构&#xff08;有时称为网络设计&…

【思路合集】talking head generation+stable diffusion

1 以DiffusionVideoEditing为baseline&#xff1a; 改进方向 针对于自回归训练方式可能导致的漂移问题&#xff1a; 训练时&#xff0c;在前一帧上引入小量的面部扭曲&#xff0c;模拟在生成过程中自然发生的扭曲。促使模型查看身份帧以进行修正。在像VoxCeleb或LRS这样的具…

学会使用ubuntu——ubuntu22.04使用WebCatlog

Ubuntu22.04使用WebCatlog WebCatlog是适用于Gnu / Linux&#xff0c;Windows或Mac OS X系统的桌面程序。 引擎基于铬&#xff0c;它用于在我们的桌面上处理Web服务。简单点就是把网页单独一个窗口出来显示&#xff0c;当一个app用。本文就是利用WebCatlog安装后的notion编写的…