MySQL复盘②

发布时间:2026/10/28 3:47:29

MySQL复盘② 第8-15题 题目原文8.使用窗口函数row_number()查询每个部门中按工资降序排列的员工排名。9.使用窗口函数rank()查询所有员工按工资降序的排名。10.使用窗口函数dense_rank()查询所有员工按工资降序的排名。11.使用 CTE先查询出每个部门的平均工资再查询平均工资高于 8500 的部门及其平均工资。12.使用 CTE查询每个部门工资排名前 2 的员工按工资降序。13.查询工资比所在部门平均工资高的员工姓名、工资和部门编号使用子查询作为条件。14.使用窗口函数查询每个部门的员工按工资降序排列并计算该员工工资占部门总工资的百分比。15.使用窗口函数row_number()查询整个公司工资排名第 3 到第 5 名的员工姓名、工资和排名。第8-15题 考点对照题号核心考点8row_number()partition by9rank()全公司排名跳号10dense_rank()全公司排名不跳号11CTE 聚合函数 关联查询12CTE row_number() 筛选前N名13关联子查询比所在部门平均工资高14窗口函数sum() over() 百分比计算15CTE row_number()between范围筛选#8selectemployees.emp_name,employees.dept_id,employees.salary,row_number()over(partitionbydept_idorderbysalarydesc)as排行fromemployees;#9selectemp_name,employees.salary,rank()over(orderbysalarydesc)as排行fromemployees;#10selectemp_name,employees.salary,dense_rank()over(orderbysalarydesc)as排行fromemployees;#11/* with 临时表名 as ( 子查询语句 ) select * from 临时表名; *//*子查询 平均工资 select dept_id, avg(employees.salary) as avgs from employees group by dept_id; */witht11as(selectdept_id,avg(employees.salary)asavgsfromemployeesgroupbydept_id)selectdept_name,avgsfromt11joindepartmentsondepartments.dept_idt11.dept_idwhereavgs8500;#12/* select *, row_number() over (partition by employees.dept_id order by employees.salary desc ) as srank from employees; *//* with t12 as ( select *, row_number() over (partition by employees.dept_id order by employees.salary desc ) as srank from employees ) select * from t12 where srank 2; */witht12as(selectdept_id,employees.emp_name,employees.salary,row_number()over(partitionbyemployees.dept_idorderbyemployees.salarydesc)assrankfromemployees)selectt12.emp_name,t12.salary,dept_namefromt12joindepartmentsont12.dept_iddepartments.dept_idwheret12.srank2;#13/* 大于公司平均工资 select emp_name,salary,dept_id from employees where salary (select avg(employees.salary) as savg from employees); */#部门佼佼者selecte.emp_name,e.salary,e.dept_idfromemployees ewheree.salary(selectavg(salary)fromemployeeswheredept_ide.dept_id);#14select*,row_number()over(partitionbydept_idorderbysalarydesc)assrank,sum(salary)over(partitionbydept_id)as总和,concat(round(salary/sum(salary)over(partitionbydept_id),2)*100,%)as占比fromemployees e;#15/*错误写法 where 不允许聚合函数 应该使用子查询 select e.name,e.salary row_number() over (order by salary desc ) as srank from employees e where e.srank between 3 and 5; */select*,row_number()over(orderbysalarydesc)assrankfromemployees;selectt.emp_name,t.salary,t.srankfrom(select*,row_number()over(orderbysalarydesc)assrankfromemployees)astwheret.srankbetween3and5;卡壳点汇总题号 出错点 错误类型8 别名 排行 缺少右引号 语法错误9 别名 排行 缺少右引号 语法错误10 dense_rank() 没有加 over() 和 order by 语法错误11 group by 写在 from 前面 语法顺序错误11 分号放错位置导致 group by 变成独立语句 语法错误11 关联条件写错自己自己 逻辑错误12 误用 group by 取前N名 思路错误13 子查询中 dept_id 没有用外层别名区分 关联子查询错误14 row_number() 和 sum() 之间缺少逗号 语法错误14 over(pa) 没写完 语法错误14 用 row_number() 去除算百分比 逻辑错误15 select 中列之间缺少逗号 语法错误15 where 中直接使用窗口函数别名 执行顺序错误核心知识点总结窗口函数三件套sqlrow_number() over (partition by 分组列 order by 排序列 排序方式) – 唯一序号不并列rank() over (order by 排序列 排序方式) – 并列跳号dense_rank() over (order by 排序列 排序方式) – 并列不跳号函数 工资相同 下一个排名row_number() 不并列分1、2 3rank() 并列1、1 3跳号dense_rank() 并列1、1 2不跳号窗口函数的两大限制限制 说明 解决方案❌ 不能在 where 中使用 where 执行在 select 之前别名还不存在 用子查询或 CTE 包一层再筛选❌ 不能直接用于除法函数嵌套错误 用 row_number() 去除没有意义 用 salary 去除关联子查询sql– 比所在部门平均工资高select e.*from employees ewhere e.salary (select avg(salary)from employeeswhere dept_id e.dept_id – 关键用外层别名关联);要点外层一定要起别名子查询中用这个别名来关联。CTE 标准模板取前N名sqlwith 临时表名 as (select *,row_number() over (partition by 分组列 order by 排序列 desc) as rnfrom 原表)select *from 临时表名where rn N;执行顺序重要sqlfrom – 1. 确定数据源where – 2. 行级筛选此时还没有窗口函数group by – 3. 分组having – 4. 组级筛选select – 5. 选择列窗口函数在这里生成order by – 6. 排序所以where 中不能引用窗口函数别名因为窗口函数在 select 阶段才生成。逗号规则老问题sqlselect 列1, – ✅ 后面还有列加逗号列2, – ✅ 后面还有列加逗号列3 – ✅ 最后一项不加逗号from 表;换行不等于分隔逗号才是分隔符总结窗口函数三兄弟rank 跳号 dense 连row_number 唯一序where 里面不能用子查询或 CTE 来包关联子查询要记牢外层别名内层用逗号分隔最后不加换行不能代替它。
延伸阅读

更多相关文章

2026/10/28 4:48:34

C++模拟算法实战:从时间步长到离散事件,掌握系统建模核心

1. 项目概述:为什么模拟算法是程序员的“万能钥匙”?如果你写过C,大概率遇到过这样的场景:题目描述了一个复杂的流程,比如银行排队、电梯调度,或者一个物理小球在桌面上弹跳。你的第一反应可能是去找有没有…

2026/10/28 4:49:21

Axure RP 9 动态面板实现无限级树形菜单:3步交互逻辑与变量控制详解

Axure RP 9 动态面板实现无限级树形菜单:3步交互逻辑与变量控制详解树形菜单作为信息架构可视化的重要组件,在产品原型设计中扮演着关键角色。本文将深入解析如何利用Axure RP 9的动态面板和中继器,构建支持无限层级扩展的智能树形菜单系统。…

2026/10/28 4:48:34

Spring AI + Ollama + Qwen3.5,快速搭建一个ai应用

零成本,不联网,一台普通办公本就能跑。 你需要准备 JDK 17 8GB 以上内存 4G以上显卡(虽然ollama可以用cpu,但是token吞吐太慢了) 第一步:装 Ollama,拉模型 ollama.com 下载安装,…

2026/10/28 4:47:57

技能不是知道而是稳定做到:一套完整的技能养成与盘点体系

总听人把“skills”挂在嘴边,简历上写“沟通能力强、熟悉Office三件套、会Python基础”,可真遇到实际任务的时候,往往发现那些写在纸上的技能根本撑不住场面。我在过去几年里带过团队、也做过自由职业,见过太多人陷在“学了一堆东…

2026/10/28 4:47:57

ECC椭圆曲线密码学原理与全栈实践指南

1. ECC到底是什么?别被缩写骗了,它不是“企业云中心”也不是“加密货币钱包”ECC这个词在最近的开发者热搜里反复刷屏,但很多人点进去才发现——自己根本没搞清它指什么。有人以为是SAP里的ECC系统(Enterprise Central Component&…

2026/10/28 4:47:57

JAR文件双击打不开的根源与修复指南

1. 为什么双击JAR文件会“消失”——这不是Bug,是系统在认真执行你的指令你把一个写着“点我运行”的JAR文件拖到桌面,满怀期待地双击——结果什么都没发生:没有窗口弹出,没有错误提示,甚至没看到任务栏闪烁一下&#…

2026/10/28 4:47:57

AI摄像头技术解析:从人形检测到智能家居联动

1. 项目概述:当家用摄像头遇上AI会发生什么?去年帮父母家安装小米摄像头时,我发现传统监控存在三个痛点:误报频繁(树叶晃动也报警)、被动查看(必须人工盯着屏幕)、事件回溯困难&…

2026/10/28 4:47:57

YOLOv8环境搭建与目标检测实战教程

1. 项目概述YOLOv8作为当前最先进的实时目标检测算法之一,在工业质检、安防监控、自动驾驶等领域有着广泛应用。本教程将完整演示从零开始搭建YOLOv8开发环境的全流程,包括服务器配置、数据准备、模型训练、性能优化到最终部署的全套解决方案。特别说明&…

2026/10/28 4:42:57

8MP车载摄像头:像素密度、识别距离与上车工程账

1. 从一颗像素说起:8MP进车为什么成了分水岭两年前跟一位做感知算法的朋友聊方案,他给整车厂报的是2MP(19201080)摄像头模组,理由很朴素:算力吃得消、链路成熟、成本可控。今年再聊,同一批人拿出…

2026/10/27 14:24:03

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/27 9:34:54

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/28 3:32:29

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/28 0:02:13

Python股票自动交易系统源码解析:从行情获取到风控的完整链路

简介:这份资源是面向高校计算机、金融相关专业毕业设计场景的完整项目源码包,主题为基于Python的股票自动交易系统,适合需要完成毕设选题、课程设计或自学金融量化交易开发的学生与开发者参考。压缩包共收录687个文件,整体约14.93…

2026/10/28 0:02:13

视酷酷信IM源码部署指南:Java 17+MySQL 8.0.33实战配置

简介:这是一套2024年亲测可部署的视酷酷信IM即时通讯系统源码,面向具备Java、OC、C#及Vue开发能力的技术人员,解决私有化即时通讯平台快速搭建与二次定制需求,尤其适用于需集成商城、保障数据主权的中小型企业或独立开发者。资源共…

2026/10/28 0:02:13

Python爬取百度迁徙数据:接口解析、批量采集与避坑指南

简介:这份资源是一个用Python爬取百度迁徙数据的脚本压缩包,面向具备Python基础、希望入门网络爬虫与数据解析的开发者,解决按日期获取全国热门城市人口迁徙数据的问题。包内共1个文件,为单个py脚本,压缩包约1KB&#…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑