首页 > 数据库 >常见SQL总结二

常见SQL总结二

时间:2023-03-30 17:14:06浏览次数:51  
标签:总结 -- 常见 score student SQL corse id select

-- 查询没有学全所有课的同学的学号、姓名;
SELECT sid,sname FROM student stu,
(SELECT COUNT(sid) as num,student_id FROM score GROUP BY student_id)t1 , -- 查出每个人的学习课程数量
(SELECT COUNT(cid)as num FROM course)t2 -- 再查出所有课程数量
WHERE
t2.num>t1.num and stu.sid=t1.student_id -- 比较当前人的学习数量 找出学习不完整的;

-- 查询至少有一门课与学号为“001”的同学所学相同的同学的学号和姓名
select DISTINCT student_id FROM score
WHERE corse_id in (SELECT corse_id FROM score WHERE student_id=2) and student_id !=1;

-- 查询至少学过学号为“001”同学所选课程中任意一门课的其他同学学号和姓名
-- 查询和“002”号的同学学习的课程完全相同的其他同学学号和姓名

select score_1.student_id,score_1.corse_id FROM
(select corse_id FROM score WhERE student_id=2) a
LEFT JOIN
score score_1
on a.corse_id=score_1.corse_id -- 找出 学生2所学的课程以及学生
WHERE score_1.student_id !=2 -- 排除2本人
GROUP BY score_1.student_id -- 去重复(按照课程查会查出多个人)
HAVING
COUNT(score_1.corse_id) -- 计数
=
(select COUNT(corse_id) FROM score WhERE student_id=2) -- 学员2的学习数量
;

-- 向SC表中插入一些记录,这些记录要求符合以下条件:①没有上过编号“002”课程的同学学号;②插入“002”号课程的平均成绩;
INSERT INTO score(student_id,corse_id,number)
select sid as student_id,2,(select AVG(number) FROM score WHERE corse_id=2) FROM student WHERE sid not in (select student_id FROM score WHERE corse_id=2)

-- 按平均成绩从低到高显示所有学生的“语文”、“数学”、“英语”三门的课程成绩,按如下形式显示: 学生ID,语文,物理,生物,有效课程数,有效平均分;
select aaa.sid as 学生id,
bbb.avstu as 平均分,
(select number FROM score WHERE score.student_id=aaa.sid and corse_id=1 ) as 生物,
(select number FROM score WHERE score.student_id=aaa.sid and corse_id=2 ) as 物理,
(select number FROM score WHERE score.student_id=aaa.sid and corse_id=4 ) as 语文
,bbb.stu_sid as 数量
FROM
(SELECT DISTINCT sid FROM student)aaa
INNER JOIN
(SELECT AVG(number) as avstu,COUNT(sid) as stu_sid,student_id FROM score GROUP BY student_id)bbb
on aaa.sid=bbb.student_id ORDER BY 平均分;

-- 查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分
SELECT bb.corse_id as 课程id, MAX(bb.number)as 最高分 ,MIN(bb.number) as 最低分 FROM
(select * FROM course) aa
LEFT JOIN
(SELECT * FROM score) bb
on aa.cid=bb.corse_id GROUP BY bb.corse_id

-- 按各科平均成绩从低到高和及格率的百分数从高到低顺序
--
-- COALESCE()该函数处理非空数据
SELECT
COALESCE(AVG(bb.number),0) as 平均,
100*SUM(CASE
WHEN COALESCE(bb.number,0)>=60 THEN
1
ELSE
0
END
)/COUNT(*) as 及格百分比
FROM
(select * FROM course) aa
LEFT JOIN
(SELECT * FROM score) bb
on aa.cid=bb.corse_id GROUP BY bb.corse_id ORDER BY 及格百分比


-- 课程平均分从高到低显示(现实任课老师)
SELECT tt.tname ,bb.num FROM
(select * FROM teacher) tt
INNER JOIN
(select * FROM course) aa on tt.tid=aa.tearch_id
INNER JOIN
(SELECT AVG(number) as num,corse_id FROM score GROUP BY corse_id)bb
on aa.cid=bb.corse_id ORDER BY bb.num desc

 

问题地址:https://www.cnblogs.com/wupeiqi/articles/5729934.html

标签:总结,--,常见,score,student,SQL,corse,id,select
From: https://www.cnblogs.com/xxks/p/17273516.html

相关文章

  • 查看 SQL Server 当前的连接数
    打开SQLServerManagementStudio(SSMS),连接到SQLServer实例。在SSMS的“对象资源管理器”窗格中,展开服务器节点。点击“管理”文件夹,然后选择“活动连接”。在“......
  • preg_match绕过简单总结
    preg_match绕过preg_matchPHP手册告诉我们,preg_match函数的返回值有3种,分别为(安全的写法是使用===运算符对返回值进行比较,手册推荐用效率更快的strpos函数替代pr......
  • MySQL、Redis和Elasticsearch比较
    MySQL是一种关系型数据库管理系统,它被广泛用于存储结构化数据。拥有极高的可靠性和安全性,支持ACID事务,并具有良好的扩展性,可以适应高并发访问的场景。Redis是一种内存......
  • MySql基本的简单sql语句
    SQL语句分类必须记住删除语句DELETEFROM表名WHERE条件插入语句简单的插入语句INSERTINTO表名(字段列表)VALUES(值列表)查询出的数据插入到已存在的表中查询出的数......
  • Mybatis动态SQL映射
    Mybatis动态SQL映射动态SQL映射1.if结构test里面的and或or必须小写2.trim-if多条件结构3.where-if多条件结构4.choose-when-otherwise多选一结构5.foreach循环结......
  • SpringCloud常见问题描述
    1什么是SpringCloudSpringcloud流应用程序启动器是基于SpringBoot的Spring集成应用程序,提供与外部系统的集成。SpringcloudTask,一个生命周期短暂的微服务框......
  • MySQL导入数据库1118错误解决方案[ERR] 1118 - Row size too large (> 8126). Changing
    MySQL导入数据库1118错误解决方案[ERR]1118-Rowsizetoolarge(>8126).ChangingsomecolumnstoTEXTorBLOB编辑sql文件,在开头设置一下innodb_strict_mode为0SE......
  • 拒绝“爆雷”!GaussDB(for MySQL)新上线了这个功能
    摘要:智能把控大数据量查询,防患系统奔溃于未然。本文分享自华为云社区《拒绝“爆雷”!GaussDB(forMySQL)新上线了这个功能》,作者:GaussDB数据库。什么是最大读取行一直以来,大......
  • 命令行上的数据科学第二版:十一、总结
    原文:https://datascienceatthecommandline.com/2e/chapter-11-conclusion.html在这最后一章,这本书接近尾声。我将首先回顾我在前面十章中讨论的内容,然后给你三条建议,并......
  • MySQL8给已有表新增自增列赋初始值的问题
    错误1:[22001][1138]Datatruncation:InvaliduseofNULLvalue原因:如果你xxx表已有数据,你是无法新增自增列的,需要中转一下。因为自增列需要是key。解决:第一步,给xxx......