MySQL面试题(下)

news/2024/7/24 8:10:38 标签: mysql, 数据库

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

SELECT
 
s.*,c.cname,t.tname
 
FROM
 
t_mysql_teacher t,t_mysql_student s,t_mysql_course c,t_mysql_score sc
 
WHERE
 
t.tid=c.tid and c.cid=sc.cid and sc.sid=s.sid and tname = '张三'

10)查询没有学全所有课程的同学的信息

SELECT
 
s.sid,s.sname,count(sc.score) n
 
FROM
 
t_mysql_score sc,t_mysql_student s
 
WHERE
 
sc.sid=s.sid
 
GROUP BY
 
s.sid,s.sname
 
HAVING
 
n<(select count(c.cid) from t_mysql_course c )

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

SELECT s.* FROM t_mysql_student s where s.sid not in(
 
SELECT
 
sc.sid
 
FROM
 
t_mysql_teacher t,t_mysql_course c,t_mysql_score sc
 
WHERE
 
t.tid=c.tid and c.cid=sc.cid and t.tname='张三'
 
GROUP BY
 
sc.sid)


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

SELECT
 
s.sid,s.sname,ROUND(AVG(sc.score)) 平均成绩,COUNT(sc.cid) n
 
FROM
 
t_mysql_student s,t_mysql_score sc
 
WHERE
 
s.sid=sc.sid and sc.score<60
 
GROUP BY
 
s.sid,s.sname
 
HAVING
 
n>=2


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

SELECT
 
s.*
 
FROM
 
t_mysql_score sc,t_mysql_student s
 
WHERE
 
sc.sid=s.sid and sc.score<60 and cid='01'
 
ORDER BY sc.score DESC


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

SELECT
s.sid,s.sname,round(AVG(sc.score),2) avgNum ,
max(case when sc.cid='01' then sc.score end)语文,
max(case when sc.cid='02' then sc.score end)数学,
max(case when sc.cid='03' then sc.score end)英语
FROM
t_mysql_score sc,t_mysql_student s,t_mysql_course c
WHERE
 sc.sid=s.sid and sc.cid=c.cid
GROUP BY
s.sid,s.sname
ORDER BY avgNum desc
 


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

SELECT
	c.cid,
	c.cname,
	count(sc.sid) 人数,
	max(sc.score) 最高分,
	min(sc.score) 最低分,
	ROUND(avg(sc.score),2) 平均分,
	CONCAT(ROUND(sum(if(sc.score>=60,1,0))/(SELECT COUNT(1) 
	from t_mysql_student)*100 ,2),'%') 及格率,
	CONCAT(ROUND(sum(if(sc.score>=70 and sc.score<80,1,0))/(SELECT COUNT(1) 
	from t_mysql_student)*100 ,2),'%') 中等率,
	CONCAT(ROUND(sum(if(sc.score>=80 and sc.score<90,1,0))/(SELECT COUNT(1) 
	from t_mysql_student)*100 ,2),'%') 优良率,
	CONCAT(ROUND(sum(if(sc.score>=90,1,0))/(SELECT COUNT(1) 
	from t_mysql_student)*100 ,2),'%') 优秀率
FROM
	t_mysql_score sc
	LEFT JOIN t_mysql_course c ON sc.cid = c.cid 
GROUP BY
	c.cid,
	c.cname


http://www.niftyadmin.cn/n/5319036.html

相关文章

Podman与Docker的区别

对于容器类的应用程序&#xff0c;我们肯定想到的是Podman和Docker。这两个是比较常用的容器化应用程序的工具&#xff0c;它们提供了类似的功能&#xff0c;但在架构和设计上有一些区别。 第一、Podman和Docker概念特点 Docker是一个开源的容器化平台&#xff0c;为用户提供…

java中常见的一些小知识(1)

1.数组转List 1.1. Arrays.asList public class Tesr {public static void main(String[] args) {String[] ary new String[]{ "1", "a"};List<String> list Arrays.asList((ary));list.add("ddsdsa");System.out.println(list);}}但是…

批量修改文件名-txt_word_ppt批量修改文件名

word/excel/ppt等等批量修改文件名批量修改文件名的方法有N多种,我的这种是比较简单的,小白也可以使用使用windows自带的批处理脚本进行批量重命名什么类型的文件批量修改原理都一样,这里以txt修改为例 1.创建文件测试 通过py脚本快速创建文件测试,这步是创建100个txt文件,这…

C 语言每日一题——旋转数组的最小数字

一、题目内容 提供一下该OJ题的链接&#xff1a;旋转数组的最小数字_牛客题霸_牛客网 (nowcoder.com) 二、题目分析 通过示例1可知&#xff0c;我们写代码的目的是在数组中找到一个最大值&#xff0c;并且返回来&#xff1b; 我们很容易的会想到创建一个变量&#xff1a;int…

js比较对象a和对象b中不相等的地方,取出对象b中不等于对象a的键值对

js比较对象a和对象b中不相等的地方&#xff0c;取出对象b中不等于对象a的键值对 通过遍历对象b&#xff0c;比较对象a和对象b中对应的键值对是否相等来找出对象b中不等于对象a的键值对。 function compareObjects(a, b) {const result {};for (const key in b) {if (!a.hasOw…

js slice方法的使用

JavaScript的slice()方法是数组对象的方法之一&#xff0c;用于从数组中选取一部分元素&#xff0c;返回一个新的数组。它可以接受两个参数&#xff0c;第一个参数表示要截取的起始位置&#xff08;包括该位置的元素&#xff09;&#xff0c;第二个参数表示要截取的结束位置&am…

网站ICP备案和公安备案教程

由于最近华为云那边的服务器到期了&#xff0c;而续费的价格比较贵一点&#xff0c;刚好阿里云这边有活动就入手了一台&#xff0c;但是将网站迁移过来后发现又要进行ICP备案&#xff0c;那就备案呗。但是备案完成之后发现还有一个公安备案&#xff0c;真让人头大啊... 很多人也…

SQL-条件查询与聚合函数的使用

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出现错误&am…