MySQL -- 07_最流行的查询需求分析(一些分组排序查询、开窗函数 dense_rank、distinct 去重函数 等~)

目录

  • 最流行的查询需求分析07
    • 演示数据准备的SQL
    • 需求演示
      • 36、查询每一门课程成绩都在70分以上的姓名、课程名称和分数
        • group by + min() + in() 函数
      • 37、查询不及格的课程及学生
        • 普通表连接查询
      • 38、查询课程编号为01语文且课程成绩在80分以上的学生的学号和姓名
        • 普通表连接查询
      • 39、求每门课程的学生人数
        • 长型数据格式(多行)和宽型数据格式(多列)
      • 40、查询选修"张三"老师所授课程的学生中,成绩最高的学生信息及其所有成绩
        • 子查询+limit
      • 41、查询不同课程但成绩相同的学生的学生编号、课程编号、学生成绩
        • distinct 去重
      • 42、查询每门课程成绩最好的前两名
        • 使用开窗函数 dense_rank() over()
        • 子查询写法,不用开窗函数排序
      • 43、统计每门课程的学生选修人数(超过5人的课程才统计),要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列
        • group by .... having ... order by
      • 44、检索至少选修两门课程的学生学号
        • group by .... having ...
      • 45、查询选修了全部课程的学生信息
        • group by .... having ...

最流行的查询需求分析07


演示数据准备的SQL


演示数据准备的SQL


需求演示


36、查询每一门课程成绩都在70分以上的姓名、课程名称和分数

group by + min() + in() 函数

用 group by 对学生id分组,用 min() 函数查出每门课程都大于70分的学生,然后用 in 匹配符合条件的学生

在这里插入图片描述

-- 36、查询每一门课程成绩都在70分以上的学生的姓名、课程名称和分数 SELECTst.s_name,co.c_name,sc.s_score 
FROMscore scLEFT JOIN course co ON co.c_id = sc.c_idLEFT JOIN student st ON st.s_id = sc.s_id 
WHERE
st.s_id in (-- 先查询出3个成绩都70分以上的学生的idselect s_id from score group by s_id having min(s_score) >= 70)

37、查询不及格的课程及学生

普通表连接查询

在这里插入图片描述

-- 37、查询不及格的课程及学生SELECTst.s_name,co.c_name,sc.s_score 
FROMscore scLEFT JOIN course co ON sc.c_id = co.c_idLEFT JOIN student st ON st.s_id = sc.s_id 
WHEREsc.s_score < 60

38、查询课程编号为01语文且课程成绩在80分以上的学生的学号和姓名

普通表连接查询

在这里插入图片描述


-- 38、查询课程编号为01语文且课程成绩在80分以上的学生的学号和姓名SELECTst.s_id,st.s_name,co.c_name,sc.s_score 
FROMcourse coLEFT JOIN score sc ON sc.c_id = co.c_idLEFT JOIN student st ON st.s_id = sc.s_id 
WHEREco.c_id = '01' AND sc.s_score >= 80

39、求每门课程的学生人数

长型数据格式(多行)和宽型数据格式(多列)

在这里插入图片描述


-- 39、求每门课程的学生人数-- 宽型数据格式SELECT sum(case when sc.c_id = '01' then 1 else 0 end) '语文',sum(case when sc.c_id = '02' then 1 else 0 end) '数学',sum(case when sc.c_id = '03' then 1 else 0 end) '英语'
FROMcourse coLEFT JOIN score sc ON co.c_id = sc.c_id-- 长型数据格式SELECTco.c_name, count(sc.s_id) '人数'
FROMcourse coLEFT JOIN score sc ON sc.c_id = co.c_id 
GROUP BYco.c_id

40、查询选修"张三"老师所授课程的学生中,成绩最高的学生信息及其所有成绩

子查询+limit

limit 1 返回查询结果的第一行数据

在这里插入图片描述


-- 40、查询选修"张三"老师所授课程的学生中,成绩最高的学生信息及其所有成绩SELECTst.*,co.c_name,sc.s_score 
FROMstudent stLEFT JOIN score sc ON sc.s_id = st.s_id LEFT JOIN course co ON co.c_id = sc.c_id
WHEREst.s_id = (SELECTsc.s_idFROMteacher teLEFT JOIN course co ON co.t_id = te.t_idLEFT JOIN score sc ON sc.c_id = co.c_id WHEREte.t_name = '张三' ORDER BYsc.s_score DESC -- limit 1 返回查询结果的第一行数据LIMIT 1 )

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

distinct 去重

在这里插入图片描述


-- 41、查询不同课程但成绩相同的学生的学生编号、课程编号、学生成绩SELECT distinct s1.*,co.c_name,st.s_name
FROMscore s1LEFT JOIN score s2 ON s1.c_id != s2.c_idLEFT JOIN course co ON co.c_id = s1.c_idLEFT JOIN student st ON st.s_id = s1.s_id  	
WHEREs1.s_score = s2.s_score

42、查询每门课程成绩最好的前两名


使用开窗函数 dense_rank() over()

使用这个开窗函数,查出排名后获取前两名就可以了,我这里连表是为了把数据展示的更完整清晰。

在这里插入图片描述

-- 42、查询每门课程成绩最好的前两名 SELECTst.s_id,st.s_name,t.c_name,t.s_score,t.drk 
FROMstudent st
RIGHT JOIN ( SELECT sc.*, co.c_name,dense_rank () over ( PARTITION BY sc.c_id ORDER BY sc.s_score DESC ) drk FROM score scLEFT JOIN course co on co.c_id = sc.c_id
) t ON t.s_id = st.s_id 
WHERE
t.drk IN (1,2)

子查询写法,不用开窗函数排序

和上面结果不一样是因为我这里只取前两名,没有考虑成绩并列相同的。
上面的开窗函数写法就有考虑成绩相同的并列排名

在这里插入图片描述

-- 子查询写法
SELECT* 
FROMscore s1 
WHERE-- 这个子查询相当于上面的开窗函数( SELECT count( s2.s_score ) FROM score s2 WHERE s1.c_id = s2.c_id AND s1.s_score < s2.s_score ) + 1 <= 2 ORDER BYs1.c_id,s1.s_score DESC

43、统计每门课程的学生选修人数(超过5人的课程才统计),要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列

group by … having … order by

在这里插入图片描述

-- 43、统计每门课程的学生选修人数(超过5人的课程才统计),
-- 要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列SELECTsc.c_id '课程编号',count( 1 ) cnt 
FROMscore sc 
GROUP BYsc.c_id 
HAVINGcount( 1 )>= 5 
ORDER BYcnt DESC,  -- 按人数降序排列sc.c_id ASC -- 按课程号升序排列

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

group by … having …

在这里插入图片描述

-- 44、检索至少选修两门课程的学生学号SELECTsc.s_id ,st.s_name,count( sc.s_id ) '选修课程数'
FROMscore scLEFT JOIN student st ON st.s_id = sc.s_id 
GROUP BYsc.s_id 
HAVINGcount( sc.s_id ) >= 2

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

group by … having …

在这里插入图片描述

-- 45、查询选修了全部课程的学生信息SELECTst.* 
FROMstudent stLEFT JOIN score sc ON st.s_id = sc.s_id 
GROUP BYsc.s_id 
HAVINGcount( sc.s_id ) = ( SELECT count( 1 ) FROM course )

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

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

相关文章

【国信华源2024年首场春季校园招聘面试会举办】

阳春三月&#xff0c;春意盎然&#xff0c;北京国信华源科技有限公司2024年校园招聘活动如期展开。4月2日&#xff0c;成功举办了“国信华源2024年首场春季校园招聘面试会”。 国信华源公司人力资源部热情接待了前来参加面试的同学们&#xff0c;并亲自陪同他们深入探访了企业。…

构建开源可观测平台

企业始终面临着确保 IT 基础设施和应用程序全年可用的压力。现代架构&#xff08;容器、混合云、SOA、微服务等&#xff09;的复杂性不断增长&#xff0c;产生大量难以管理的日志。我们需要智能应用程序性能管理 (APM) 和可观察性工具来实现卓越生产并满足可用性和正常运行时间…

【量子计算机为什么能吊打通用计算机】浅谈

Quntum Computer 一、量子计算机导入 这是一双手&#xff0c;这是大自然送给你最神奇的礼物&#xff0c;你用它来写字、吃饭、打游戏&#xff0c;除此之外&#xff0c;它还有一个妙不可言的功能&#xff0c;计算。是的&#xff0c;手是你人生中的第一个计算器&#xff0c;到小…

非关系型数据库(缓存数据库)redis的基础认知与安装

目录 一.关系型数据库和非关系型数据库 关系型数据库 非关系型数据库 关系数据库与非关系型数据库的区别 ①非关系数据 关系型数据库 非关系型数据库产生背景 数据存储流向 非关系型数据库 关系数据库 二.redis的简介 1.概念 2.Redis 具有以下几个优点: 3.Redi…

日期专题:做题笔记 (时间显示/星期计算/星系炸弹/第几天/纪念日)

目录 时间显示 代码 星期计算 代码 星系炸弹 代码 第几天 纪念日 代码 时间显示 时间显示 这道题主要是单位换算。 ①单位换算 ②输出格式&#xff1a; a. 不足两位补前导零。利用printf输出 b. 注意 long long 输出格式应该是 %lld 长整型 代码 #include <…

Coursera自然语言处理专项课程04:Natural Language Processing with Attention Models笔记 Week01

Natural Language Processing with Attention Models Course Certificate 本文是学习这门课 Natural Language Processing with Attention Models的学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。 文章目录 Natural Language Processing with Attention ModelsWeek 01…

Maven POM元素解析

这是对Maven中使用的Maven项目描述符的引用。 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/…

Runes 生态一周要览 ▣ 2024.3.25-3.31|Runes 协议更新 BTC 减半在即

Runes 生态大事摘要 1、Casey 发布了 Runes 协议文档 RUNES HAVE DOCS&#xff0c;Github 代码库更新到 ord 0.17.0 版本&#xff0c;Casey 表示符文是一个“严肃”的代币协议。 2、Casey 公布了第一个硬编码的创世符文「UNCOMMONGOODS」 3、4月7日香港沙龙&#xff5c;聚焦「…

HTTPS跟HTTP有区别吗?

HTTPS和HTTP的区别&#xff0c;白话一点说就是&#xff1a; 1. 安全程度&#xff1a; - HTTP&#xff1a;就像是你和朋友面对面聊天&#xff0c;说的话大家都能听见&#xff08;信息明文传输&#xff0c;容易被偷听&#xff09;。 - HTTPS&#xff1a;就像是你们俩戴着加密耳机…

当代软件专业大学生与青年在新质生产力背景下的发展探究

在新质生产力的浪潮中,信息技术以前所未有的速度革新,为软件专业的大学生和青年带来了丰富的机遇,同时也伴随着一系列的挑战。他们如何把握时代的脉搏,实现个人的发展,成为了值得深入探讨的话题。 一、新质生产力背景下的机遇 随着新质生产力的不断发展,信息技术在各个领…

电商技术揭秘一:电商架构设计与核心技术

文章目录 引言一、电商平台架构概述1.1 架构设计原则与架构类型选择1.2 传统电商平台架构与现代化架构趋势分析 二、高并发处理与负载均衡2.1 高并发访问特点分析与挑战2.2 负载均衡原理与算法选择 三、分布式数据库与缓存技术3.1 分布式数据库设计与一致性考量3.2 缓存策略与缓…

Windows11下Docker使用记录(一)

Docker使用记录&#xff08;一&#xff09; 简单介绍Docker安装Docker 常用命令Docker 可视化Docker 使用GPU可视化rviz、gazebo 在进行ROS项目开发时&#xff0c;如果只有一台Windows电脑&#xff0c;我们可以考虑使用WSL或Docker来搭建ROS环境。在尝试了两种方式后&#xff0…

MySQL 优化及故障排查

目录 一、mysql 前置知识点 二、MySQL 单实例常见故障 故障一 故障二 故障三 故障四 故障五 故障六 故障七 故障八 三、MySQL 主从故障排查 故障一 故障二 故障三 四、MySQL 优化 1.硬件方面 &#xff08;1&#xff09;关于 CPU &#xff08;2&#xff09;关…

2024 抖音欢笑中国年(二):AnnieX互动容器创新玩法解析

本文基于24年抖音春节活动业务背景&#xff0c;介绍了字节跨端容器AnnieX在游戏互动套件上的探索&#xff0c;致力于提升容器在游戏互动场景的优化能力。 业务背景 AnnieX作为字节一方游戏统一容器&#xff0c;服务字节内部电商、直播、UG等跨端场景业务。在字节一方游戏互动场…

R语言技能 | 不同数据类型的转换

原文链接&#xff1a;R语言技能 | 不同数据类型的转换 本期教程 写在前面 今天是4月份的第一天&#xff0c;再过2天后再一次迎来清明小假期。木鸡大家是否正常放假呢&#xff1f; 我们在使用R语言做数据分析时&#xff0c;会一直对数据进行不同类型的转换&#xff0c;有时候…

SpringData ElasticSearch - 简化开发,完美适配 Spring 生态

目录 一、SpringData ElasticSearch 1.1、环境配置 1.2、创建实体类 1.3、ElasticsearchRestTemplate 的使用 1.3.1、创建索引 设置映射 1.3.2、创建索引映射注意事项&#xff08;必看&#xff09; 1.3.3、简单的增删改查 1.3.4、搜索 1.4、ElasticsearchRepository …

Python人工智能应用----文本情感分析

1.问题引入 接着前两节课的内容&#xff0c;今天我们要构建一个人工智能系统。 它的目的是像人类一样&#xff0c;区分评价的情感是正面还是负面的。 接下来&#xff0c;我们要对提取的文本进行感情色彩的分析&#xff0c;这个就是文本情感分析&#xff0c;我们要使用机器学习…

EXCEL VBA将word里面的指定的关键词替换掉后并标记红色字体

EXCEL VBA将word里面的指定的关键词替换掉后并标记红色字体 Sub 开关() Call 新建副本 Call ReplaceAndHighlightInFolder End Sub Sub 新建副本()fpath ThisWorkbook.Path & "\"Dim MyFile As ObjectSet MyFile CreateObject("Scripting.FileSystemObjec…

主干网络篇 | YOLOv5/v7 更换骨干网络之 HGNetv2 | 百度新一代超强主干网络

本改进已融入到 YOLOv5-Magic 框架。 论文地址:https://arxiv.org/abs/2304.08069 代码地址:https://github.com/PaddlePaddle/PaddleDetection 中文翻译:https://blog.csdn.net/weixin_43694096/article/details/131353118 文章目录 HGNetv2网络结构1.1 主干网络1.2 颈部…

随手集☞Spring知识盘点

概述 定义 Spring框架的提出者是程序员Rod Johnson&#xff0c;他在2002年最早提出了这个框架的概念&#xff0c;随后创建了这个框架。Spring框架的目标是简化企业级Java应用程序的开发&#xff0c;通过提供一套全面的工具和功能&#xff0c;使开发者能够更加高效地构建高质量…