首页 > 其他分享 >学生选课表练习(面试题)

学生选课表练习(面试题)

时间:2024-07-23 21:57:34浏览次数:19  
标签:insert 面试题 选课 into 练习 values student Sid sc

所有表都放在最后

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

SELECT DISTINCT student.*,t1.score FROM student
INNER JOIN 
(SELECT * FROM sc WHERE sc.Cid = 1) t1 
ON t1.Sid = student.Sid
INNER JOIN 
(SELECT * FROM sc WHERE sc.Cid = 2) t2 
ON t2.Sid = t1.Sid
WHERE t1.score > t2.score

查询结果:

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

SELECT student.Sid,student.Sname,AVG(score) FROM student,sc
WHERE student.Sid = sc.Sid
GROUP BY Sid
HAVING AVG(score)>=60

查询结果:

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

-- 方法一
SELECT * FROM sc WHERE sid IN(
SELECT sid FROM sc
)
-- 方法二
SELECT DISTINCT student.* FROM student
INNER JOIN sc 
ON sc.Sid = student.Sid

执行结果:

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

SELECT student.Sid,student.Sname,COUNT(cid),SUM(score) FROM student
LEFT JOIN sc ON student.Sid = sc.Sid
GROUP BY student.Sid

查询结果:

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

SELECT COUNT(*) FROM teacher WHERE teacher.Tname LIKE '李%'

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

SELECT DISTINCT student.* FROM student,teacher,course,sc,class
WHERE student.Sid = sc.Sid
AND sc.Cid = course.Cid
AND course.Tid = teacher.Tid
AND student.classid = class.classid
AND teacher.Tname = '张三'

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

SELECT student.* FROM student
LEFT JOIN sc ON student.Sid = sc.Sid
GROUP BY student.Sid
HAVING COUNT(cid) < (SELECT COUNT(*) FROM course)

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

SELECT DISTINCT student.* FROM student
LEFT JOIN sc ON sc.Sid = student.Sid
WHERE cid IN(
SELECT cid FROM sc WHERE sid = 1 )
AND student.Sid <> 1

查询结果:

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

-- 完全相同
-- 1.范围相同
-- 2.个数相同 

SELECT student.* FROM student
INNER JOIN sc ON student.Sid = sc.Sid
WHERE
student.Sid NOT IN(
SELECT sid FROM sc WHERE cid NOT IN (
	SELECT cid FROM sc WHERE sid = 1)
) 
GROUP BY student.Sid
HAVING COUNT(cid) = (SELECT COUNT(*) FROM sc WHERE sid = 1)

查询结果:

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

SELECT student.Sname FROM student
WHERE sid NOT IN 
(SELECT DISTINCT sc.Cid FROM sc
INNER JOIN course ON sc.Cid = course.Cid
INNER JOIN teacher ON course.Tid = teacher.Tid 
WHERE teacher.Tname = '张三')

查询结果: 

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

SELECT student.Sid,sname,AVG(score) FROM sc,student
WHERE score < 60 AND sc.Sid = student.Sid
GROUP BY sid HAVING COUNT(cid) >= 2

查询结果: 

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

SELECT DISTINCT * FROM student,sc
WHERE student.Sid = sc.Sid AND cid = 1 AND score < 60
ORDER BY score DESC

查询结果:

 13. 查询各科成绩最高分、最低分和平均分,以如下形式显示:课程 ID,课程 NAME,最高分,最低分,平均分,及格率,中等率,优良率,优秀率(及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90)。

SELECT sc.Cid,course.Cname,MAX(score),MIN(score),AVG(score),
COUNT(CASE WHEN score >= 60 THEN score END) /COUNT(*) * 100 '及格率',
COUNT(CASE WHEN score >= 70 AND score <80 THEN score END)/COUNT(*) * 100 '中等率',
COUNT(CASE WHEN score >= 80 AND score <90 THEN score END)/COUNT(*) * 100 '优良率',
COUNT(CASE WHEN score >= 90 THEN score END)/COUNT(*) * 100 '优秀率'
FROM course,sc
WHERE course.Cid = sc.Cid
GROUP BY course.Cid

查询结果:



class表:

班级表 Class

create table Class(classid int primary key, classname varchar(20));

insert into Class values('1', '一班');

insert into Class values('2', '二班');

course表:

课程表 Course

create table Course(Cid int primary key,Cname varchar(10),Tid varchar(10));

insert into Course values('1' , '语文' , '2');

insert into Course values('2' , '数学' , '1');

insert into Course values('3' , '英语' , '3');

sc表:

成绩表 SC

create table SC(Sid int, Cid int, score decimal(18,1));

insert into SC values('1' , '1' , 80);

insert into SC values('1' , '2' , 90);

insert into SC values('1' , '3' , 99);

insert into SC values('2' , '1' , 70);

insert into SC values('2' , '2' , 60);

insert into SC values('2' , '3' , 80);

insert into SC values('3' , '1' , 80);

insert into SC values('3' , '2' , 80);

insert into SC values('3' , '3' , 80);

insert into SC values('4' , '1' , 50);

insert into SC values('4' , '2' , 30);

insert into SC values('4' , '3' , 20);

insert into SC values('5' , '1' , 76);

insert into SC values('5' , '2' , 87);

insert into SC values('6' , '1' , 31);

insert into SC values('6' , '3' , 34);

insert into SC values('7' , '2' , 89);

insert into SC values('7' , '3' , 98)

student表:

学生表 Student

create table Student(Sid int primary key, Sname varchar(10), birthday datetime, Ssex varchar(10), classid int);

insert into Student values('1' , '赵雷' , '1990-01-01' , '男', '1');

insert into Student values('2' , '钱电' , '1990-12-21' , '男', '2');

insert into Student values('3' , '孙风' , '1990-05-20' , '男', '1');

insert into Student values('4' , '李云' , '1990-08-06' , '男', '2');

insert into Student values('5' , '周梅' , '1991-12-01' , '女', '1');

insert into Student values('6' , '吴兰' , '1992-03-01' , '女', '2');

insert into Student values('7' , '郑竹' , '1989-07-01' , '女', '1');

insert into Student values('8' , '王菊' , '1990-01-20' , '女', '2');

teacher表:

教师表 Teacher

create table Teacher(

       Tid int primary key auto_increment,

       Tname varchar(10),

       Tsex TINYINT default 1,

       Tbirthday date,

       Taddress varchar(255),

       Temail varchar(255),

       Tmoney DECIMAL(20,2)

);

insert into Teacher values('1' , '张三',1,'1988-1-15','陕西咸阳','[email protected]',3000.00);

insert into Teacher values('2' , '李四',0,'1992-5-9','陕西宝鸡','[email protected]',4000.00);

insert into Teacher values('3' , '王五',1,'1977-7-1','山西太原','[email protected]',5000.00);

标签:insert,面试题,选课,into,练习,values,student,Sid,sc
From: https://blog.csdn.net/m0_64481525/article/details/140644886

相关文章

  • 学习C语言第十天(数组练习)
    一、三子棋game.h#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<time.h>#include<stdlib.h>#defineROW3#defineCOL3//初始化棋盘voidinitboard(charboard[ROW][COL],introw,intcol);//打印棋盘voiddispalyboard(charboard[ROW][CO......
  • 二分查找(数组的练习)
    一、什么是二分查找    二分查找(又叫折半查找)是一种查找算法,它能使查找的速度更快,但要求查找的序列必须有序。        如果我们按顺序在一个序列中查找一个数,当这个数在靠前的位置,查找的速度还好;那么当这个数在很靠后的位置呢?甚至是一个很长的数组,要查找......
  • 2024年最新完整java面试题(含答案)
    1 、面向对象的特征有哪些方面 ? 【基础】答:面向对象的特征主要有以下几个方面:1) 抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是......
  • 面试题:如何解决缓存和数据库的一致性问题?
    所谓的一致性问题是指,在同时使用缓存和数据库的情况下,要确保数据在缓存与数据库中的更新操作保持同步。也就是当对数据进行修改时,无论是先修改缓存还是先修改数据库,最终都要保证两者的数据是一样的,不会出现数据不一样的问题。1.一致性问题解决方案缓存和数据库一致性的经典解决......
  • 你离java岗面试成功只差这一份面试题!拿下吧让你少走99%弯路
     马上金九银十很多同学/朋友都在忙着找工作,小五给大家整理了一份非常全面的Java面试题含答案总结!从java面试新手到java面试专家,你只差这一份面试题!还不赶紧来拿下~八股文内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring......
  • 【力扣】SQL题库练习2
    连接577.员工奖金表:Employee+-------------+---------+|ColumnName|Type|+-------------+---------+|empId|int||name|varchar||supervisor|int||salary|int|+-------------+---------+empId是该表中具......
  • JAVA面试题:HashMap和HashTable的区别
    一、先说结论        HashMap和HashTable都是Map接口的实现类。HashMap采用数组、链表和红黑树的数据结构,非线性安全且无序,查找效率高,初始化默认容量为2^4,每次扩容为原来的2倍;而HashTable采用数组和链表的数据结构,线性安全,键值均不允许为null,默认初始大小......
  • Redis常见面试题汇总
    1.Redis中的底层数据结构String(字符串、整数或浮点数):String是Redis最基本的数据类型,一个key对应一个value,value的最大值为512MString类型是二进制安全的(原理在2),意味着redis可以包含任何数据,如图片、视频(可以转换为二进制编码)和序列化对象List(列表):redis列表是简单的字符......
  • 计算机毕业设计——基于SpringBoot的高并发选课系统
    基于SpringBoot的高并发选课系统私信获取完整代码项目简介本项目主要解决在高校选课场景下,保证选课系统在大量读写压力下不宕机,以及选课时尽可能提高选课QPS,给学生一个良好的选课体验,完成上述功能同时保证选课安全运行效果图其他效果图请到image文件夹中查看技术......
  • Python面试题:使用NumPy进行高效数组运算
    NumPy是Python中进行高效数组运算的基础库。以下是一些示例,展示了如何使用NumPy进行高效的数组运算,包括创建数组、数组操作、数学运算以及一些高级操作。安装NumPy如果你还没有安装NumPy,可以通过以下命令进行安装:pipinstallnumpy示例代码1.创建数组import......