sql 百分数_SQL经典50题笔记

SQL语句执行顺序

(8) SELECT (9)DISTINCT<Select_list>
(1) FROM <left_table> (3) <join_type>JOIN<right_table>
(2) ON<join_condition>
(4) WHERE<where_condition>
(5) GROUP BY<group_by_list>
(6) WITH {CUBE|ROLLUP}
(7) HAVING<having_condtion>
(10) ORDER BY<order_by_list>
(11) LIMIT<limit_number>

9、查询所有课程成绩小于60分的同学的学号、姓名;成绩最大的小于60分,所以就是所有成绩小于60分

select t1.sid,sname 
from
(select sid,max(score)
from SC group by sid having max(score)<60)as t1
left join student on t1.sid=student.sid

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

select a.sid,sname
from
(select sid,count(cid) from SC 
group by sid 
having count(cid)<(select count(cid) from course))as a
left join student on a.sid=student.sid;

11、查询至少有一门课与学号为“01”的同学所学相同的同学的学号和姓名;

select sid,sname
from Student
where sid in
(select distinct sid   #查询学生学号sid
from SC
where cid
in(select cid from SC where sid='01'))  #在成绩表中查出学号为01的学生课程
and sid!='01';

12、查询和"01"号的同学学习的课程完全相同的其他同学的学号和姓名

注:课程完全相同≠课程数相同

注2:在同一次SQL语句中多次引用SC表,要对其进行a、b、c标注

select sid,sname
from Student     #在student表中查出符合下面条件对应的学号和姓名
where sid
in
(SELECT
sid
from
(select *    #查出所有课中和01重合的课
from SC as a
where cid 
in
(select cid from SC where sid='01'))b  #01学过的课
group by sid
having count(cid)=(select count(cid) FROM SC as c where sid='01')) #按学号分组后筛选出和01的学的课程数相等的学号
and sid!='01'   #查出学号姓名后排除掉01本身

8a03e1e35d2edc5bd75f831ba4bb8c19.png

13、把“SC”表中“张三”老师教的课的成绩都更改为此课程的平均成绩;

暂跳过update题目

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

select sname
from Student
where sid 
not in(select distinct sid   #not in 不在***里
from SC 
left join course on
SC.cid=course.cid
left join teacher on
course.tid=teacher.tid
where tname='张三')

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

select t.sid,sname,avg_score  #对子查询引用
from
(
select sid,count(if(score<60,cid,null)),avg(score)as avg_score #这里的自查询要对平均数avg(score)重命名,因为下一步的查询要对其引用
from SC
group by sid
having count(if(score<60,cid,null))>=2
)t
left join student 
on t.sid=student.sid

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

select *
from 
(select student.sid,sname,sage,ssex,cid,score
FROM student left join SC on student.sid=SC.sid
where cid='01' and score<60)t
order by score desc

17、按平均成绩从高到低显示所有学生的平均成绩

select sid,avg(score)as avg_score
from SC
group by sid
order by avg_score desc

18、查询各科成绩最高分、最低分和平均分,以如下形式显示:

以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,

优良率,优秀率

及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90

select t.cid,any_value(cname)as 课程名称,max(score)as 最高分,
min(score)as 最低分,avg(score) as 平均分,
sum(及格)/count(sid) as 及格率,
sum(中等)/count(sid) as 中等率,
sum(优良)/count(sid) as 优良率,
sum(优秀)/count(sid) as 优秀率
from
(select *,case when score>=60 then 1 else 0 end as 及格,
case when score>=70 and score<80 then 1 else 0 end as 中等,
case when score>=80 and score<90 then 1 else 0 end as 优良,
case when score>=90 then 1 else 0 end as 优秀
from SC)t
left join course on t.cid=course.cid
group by cid
order by cid

8c7279f7d6b660bf43260f687b347512.png
小rrrrr:Mysql 使用 Group by 之Error 1055 之坑​zhuanlan.zhihu.com

19、按各科平均成绩从低到高和及格率的百分数从高到低顺序

select cid,avg(score) as avg_score,
count(if(score>=60,sid,null))/count(sid) as pass_rate
from SC
GROUP BY(cid) order by avg(score),pass_rate

4005d892ae84f477ce51a26c95f63b4f.png

20、查询学生的总成绩并进行排名

select sid,sum(score)
from SC
group by (sid)
order by sum(score) desc

af4502d3537e6127e531c085ae50d870.png

21、查询不同老师所教不同课程平均分从高到低显示

select course.tid,SC.cid,avg(score)as avg_score
from course left join SC on course.cid=SC.cid
group by tid,cid
order by avg(score) desc

6d9f6ab47e96b7712adb3bb3bbf56f8b.png

22、查询所有课程的成绩第2名到第3名的学生信息及该课程成绩

select cid,sid,score
from
(select cid,sid,score,
row_number() over(partition by cid order by score desc)as ranking
from SC)c
where ranking>=2 and ranking<=3

ce585c3cec7c762f776b29fb161cbe29.png

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

#注意case when 前用sum求和,表示满足条件的人数的求和,而不是计次!!
select SC.cid,cname,
concat(round(100*sum(case when score between 85 and 100 then 1 else 0 end)/count(sid),2),'%') as '[100-85]',
concat(round(100*sum(case when score between 70 and 85 then 1 else 0 end)/count(sid),2),'%') as '[85-70]',
concat(round(100*sum(case when score between 60 and 70 then 1 else 0 end)/count(sid),2),'%') as '[70-60]',
concat(round(100*sum(case when score<=60 then 1 else 0 end)/count(sid),2),'%') as '[0-60]'
from SC left join course on SC.cid=course.cid
GROUP BY SC.cid,cname

23662e60a50908cacb4ff13c6d051579.png

24、查询学生平均成绩及其名次

select sid,avg_score,row_number() over(order by avg_score desc)as ranking
from (SELECT sid,avg(score)as avg_score from SC group by sid order by avg_score desc)a

84c9def727ee1ecba7506129a9361759.png

25、查询各科成绩前三名的记录

select *
from
(select cid,score,row_number() over(partition by cid order by score desc)as rankk
from SC)a where rankk<=3

5990ab999213b18b02994335cbca63df.png

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

select cid,count(sid)as 人数
from SC 
group by cid

597be47a89141c05f13d8fd34708212d.png

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

select sid
from
(select sid,count(cid)as 选课数
from SC 
group by sid)a
where 选课数=1

5fc3fee396a50940083ce24a2824ad2b.png

28、查询男生、女生人数

select ssex,count(distinct sid)as 人数
from student
group by ssex

ab1c2b43b6d045907c2a13011de33a25.png

29、查询名字中含有"风"字的学生信息

select * 
from Student
where sname like "%风"

bf5e97c5475bf99bf001fa95a4d87a12.png

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

select sname,ssex,count(sid)
from Student
group by ssex,sname
having count(sid)>=2

98bc753c62fb0cf33c7835ce33e7284e.png
  • 有关时间序列的查询

31、查询1990年出生的学生名单(注:Student表中Sage列的类型是datetime)

select * from student where year(sage)='1990'

a013233b2280d61cd6b2aee8759bcd21.png

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

select cid,avg(score)as avg_score
from SC
group by cid
order by avg_score,cid desc

e6027526e6d08ff1d16ff6316a80b101.png

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

思路:四表连接,筛选出教师为张三的课的学生成绩,限制出排名第一的学生,取出学生信息

selectsc.sid,sname,cname,score
from sc
left join courseon sc.cid=course.cid
left join teacheron course.tid=teacher.tid
left join studenton sc.sid=student.sid
where tname='张三'
order by score desc
limit 1;

1933bcd64557e530eec4ebb459a54dbe.png

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

思路:先查出张三老师对应的课程,学生的最高成绩,将此成绩作为子查询的筛选条件,进行四表连接的查询筛选

select student.*,score
from student inner join SC on student.sid=SC.sid
inner join course on SC.cid=course.cid
inner join teacher on course.tid=teacher.tid
where tname='张三' and score=
(select max(score)
from teacher inner join course on teacher.tid=course.tid
inner join SC on course.cid=SC.cid 
where tname='张三')

cf38daa3473b33370a91ee0fa04a76c4.png

由于创建的表格里面没有重复的成绩,所以返回结果没有发生变化

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

SELECT DISTINCT a.* 
FROMsc AS a INNER JOIN sc AS b 
WHERE a.score = b.score AND a.cid != b.cid ;

3e70f52d2d5296e626fcacd9f4cb440a.png

注:上述方法算出来的会包含课程相同,学号不同的情况,比如最后两行。所以题目叙述不严谨,课程不同成绩相同是指课程两两不同即可还是全部不能相同,这点没有指明。

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

窗口函数

rank:并列名次,占用下一名次位置

dense_rank:并列名次,不占用下一名次位置

row_number:不考虑并列名次

SELECT *
from
(select cid,sid,score,
rank() over(partition by cid order by score desc)as rankk
from SC)a
where rankk<=2

6eb57f0d418258f8e090a4b4ef331427.png

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

select cid,count(sid)
from SC
group by cid
having count(sid)>5

ab6de1067c3deba52d7b78c689d67f55.png

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

select sid,count(cid)
from SC
group by sid
having count(cid)>=2

7dac69ab6e35cfbbb24c3fea06dca532.png

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

先计算出一共有多少门课程,作为子查询。对学号进行分组,分组限定条件为学的课程数和总课程数相等。

select SC.sid,any_value(sname),any_value(sage),any_value(ssex)
from SC left join student
on SC.sid=student.sid
group by SC.sid
having count(cid)=
(select count(distinct cid)
from SC)

16db9f5a851021a16cb0eb036898b0c7.png

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

select sid,year(now())-year(sage) as 年龄  #年份相减,四舍五入
from student

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

select sid,sname
from student
where week(now())=week(sage)

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

select sid,sname
from student
where week(now())+1=week(sage)

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

select sid,sname
from student
where month(sage)=month(now())

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

select sid,sname
from student
where month(sage)=month(now())+1

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

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

相关文章

这种秀恩爱你见过吗?

1 棒棒哒&#xff0c;做的好2 程序员的日常3 一群单身鱼都看呆了4 最佳COS5 自拍达喵6 为什么你们能长这么大&#xff1f;懵逼了7 请用一个词形容这张图你点的每个赞&#xff0c;我都认真当成了喜欢

Layui宣布下线,不自禁的感叹一下,回忆啊

简单唠唠 其实对于前端的信息好久没关注了&#xff0c;一堆后端的Bug要撸&#xff0c;实在没有时间&#xff1b;由于浏览器收藏的东西比较多&#xff0c;于是就想抽点时间归归类&#xff0c;方便查询信息&#xff1b;趁这个机会就挨个点进去瞅一遍&#xff08;随便摸摸鱼&#…

《C语言及程序设计》程序填空——字符数组与字符串处理

返回&#xff1a;贺老师课程教学链接 1、编写一函数&#xff0c;由实参传来一个字符串&#xff0c;统计此字符串中字母、数字、空格和其它字符的个数&#xff0c;在主函数中输入字符串以及输出上述的结果。请将下面的程序补充完整。#include<stdio.h> #include<string…

csv文件设置每个cell大小_Python对文本文件和Excel的处理机制

有头发且有趣的码农万里挑一~ 96有料叔 | 一位有故事的程序猿读取文件内容的方式直接一次性读取文件内容按行读取文件内容将读取的文件内容形成一个列表直接一次性读取文件内容open()需要手动释放资源&#xff0c;最后使用close()with open() as…使用with … as…&#xff0c;…

idea2020.2.2怎么创建web项目_创建Vue3.0的项目

1. 查看Vue的环境版本Vue -V如果版本低于4.0&#xff0c;则需要升级Vue的版本npm install -g vue/cli2. 创建Vue 3.0的项目3. VS Code 的环境配置安装Extension&#xff1a;ESLint&#xff0c; Vetur。VS Code基于ESLint的Auto Save功能&#xff0c;可以很好的格式化代码&#…

揭秘奢侈品代工厂内幕:千元以上的大牌墨镜,成本甚至不过百!

▲ 点击查看纵观全球没有哪个国家像中国这样几乎所有领域都在发力世界能研发高铁的国家&#xff0c;不超过十个&#xff0c;中国在列&#xff1b;世界能建造军舰的国家&#xff0c;不超过十个&#xff0c;中国在列&#xff1b;世界能研发第五代隐身战机的国家&#xff0c;不超过…

Dapr牵手.NET学习笔记:状态管理进阶(一)

在上一篇文章中说到&#xff0c;dapr默认的状态是不可能跨appid的&#xff0c;也就是只能在相同的应用内访问自己设置的状态数据&#xff0c;dapr支持三种状态的共享配置&#xff1a;appid&#xff0c;nam&#xff0c;none&#xff0c;是通过修改components下的statestore.yaml…

ext 浅谈类的实例

打开ext的API&#xff0c;如下找到Class这个选项将鼠标移到config那里可以看到有以下属性&#xff1a;好了&#xff0c;让我们开始进入主题&#xff1a;首先&#xff0c;来讲讲如何自定义一个类&#xff0c;在ext中&#xff0c;创建一个类其实与其他语言差不多&#xff0c;只是…

构造函数怎么在主函数调用_C++ 虚基类及其派生类构造函数(学习笔记:第7章 12)...

虚基类及其派生类构造函数[1]建立对象时所指定的类称为最远派生类。虚基类的成员是由最远派生类的构造函数通过调用虚基类的构造函数进行初始化的。在整个继承结构中&#xff0c;直接或间接继承虚基类的所有派生类&#xff0c;都必须在构造函数的成员初始化表中为虚基类的构造函…

打得了橄榄球大联盟,进得了麻省理工,无论是四肢还是头脑都同样发达,这才叫猛男!...

全世界只有3.14 % 的人关注了爆炸吧知识今天小天就介绍一位同样在学术界、体坛都很生猛的猛男吧约翰尤索 (John Urschel) 关于约翰尤索一直有“学霸”“学神”这些词伴随着他然而尤索却说他从来都没认真听过老师讲课尤索出生在加拿大温尼伯父亲是医生&#xff0c;母亲是律师很小…

加菲猫语录,只准笑不准学

&#xff0d;今天我要做俯卧撑今天先俯卧&#xff0c;明天再撑。 &#xff0d;&#xff0d;真不愿意起来&#xff0c;尤其我还病了&#xff0c;可我还得带病坚持吃饭。 &#xff0d;&#xff0d;肚子大不可怕&#xff0c;可怕的是肚子里没有好东西。或者说&#xff0c;没有好…

python 什么是原类_Python 什么是元类(metaclasses)?

1.什么是类 在理解元类之前&#xff0c;我们必须先掌握Python中的类(class)。 和大多数语言一样&#xff0c;Python中的类知识用来描述如何“生成一个对象”&#xff1a;但是&#xff0c;在Python中&#xff0c;类不仅能用来描述如何生成一个对象&#xff0c;类本身也是对象。 …

听说这是和女朋友住一起后的现象之一

1 被人叫醒时的你&#xff01;2 分享一只软糯香甜的香蕉。。3 到底选哪根好呢&#xff1f;4 大叔你的手机壳怎么肥四&#xff1f;&#xff1f;5 听说这是和女朋友住一起后的现象之一6 爱国主义教育培养了一群吃货&#xff01;7 今天做做题吧&#xff01;&#xff08;本视频来源…

PDF 补丁丁 (修改PDF书签;拆分、合并、制作PDF;提取图片) 0.3.0.8 正式版

PDF 补丁丁 0.3.0.8 正式版 新版本已经发布&#xff0c;请到博客首页下载。 软件简介 PDF补丁丁是一个用于修改PDF文件信息的工具。它具有以下功能&#xff1a;■ 修改文档&#xff08;带“*”号部分功能需通过高级补丁修改功能实现&#xff09;&#xff1a; ● 修改文档属性…

Dapr + .NET 实战(八)服务监测

服务监测分布式服务性能指标&#xff0c;链路追踪&#xff0c;运行状况&#xff0c;日志记录都很重要&#xff0c;我们日常开发中为了实现这些功能需要集成很多功能&#xff0c;替换监控组件时成本也很高。Dapr 可观测性模块将服务监测与应用程序分离。它自动捕获由 Dapr sidec…

世界上第一位程序员是位美女——AdaLovelace【有图为证】

AdaLovelace画像 仙女一般吧....简介&#xff1a; 阿达奥古斯塔&#xff0c;19世纪诗人拜伦的女儿&#xff0c;数学家。穿孔机程序创始人&#xff0c;建立了循环和子程序概念。为计算程序拟定“算法”&#xff0c;写作的第一份“程序设计流程图”&#xff0c;被珍视为“第一个…

php mysql管理_MySQL 连接与管理

让 PHP 支持 MySQLPHP 有专有的 MySQL 函数库以使用操作 MYSQL 数据库。在 PHP 5 及以后版本中不再默认支持 MySQL &#xff0c;所以在运行这些库之前&#xff0c;请确定 php.ini 加载了 MySQL 数据库支持&#xff1a;extension mysql.dllMySQL 连接mysql_connect() 函数用于开…

android开发我的新浪微博客户端-用户授权页面UI篇(3.1)

上一篇讲了讲OAuth授权认证的事情,大概的介绍了OAuth的原理&#xff0c;并且完成了一个OAuth.java的类库&#xff0c;提供了几个OAuth认证必要的方法&#xff0c;本篇开始具体讲本项目的用户授权功能&#xff0c;用户授权页面是当用户第一次使用本软件的时候自动从载入页面跳转…

还缺30万人!程序员2020年要过好日子了……

全世界只有3.14 % 的人关注了爆炸吧知识最近&#xff0c;程序员届有一个重大好消息&#xff0c;可能很多人还不知道&#xff0c;那就是&#xff1a;国内某些城市已经开始程序员人才补贴了&#xff01;对于人工智能公司的项目开发、人才引进、科技研发&#xff0c;最高按照国拨经…

iNeuOS工业互联网操作系统部署在华为欧拉(openEuler)国产系统

目 录1. 概述... 32. 创建虚拟机&安装华为欧拉&#xff08;openEuler&#xff09;系统... 42.1 创建新的虚拟机... 42.2 默认选择Wowrkstation 16.x. 52.3 选择稍后安装操作系统... 62.4 选择其他Liunx 4.x 64位.…