发布时间:2026/9/2 20:57:16
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/9/2 20:56:53

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

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

2026/9/2 9:49:38

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

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

2026/9/1 19:46:50

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

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

2026/9/2 20:56:20

资源站源码选型与部署实战:PHP建站、SEO优化到长期运营

简介:这是一套基于ASP的完整免费资源站源码,面向网站开发初学者、快速建站用户及二次开发者,可帮助快速搭建并理解完整站点。压缩包内包含完整的前端页面、服务端脚本、数据库配置及样式交互文件,共包含1119个相关文件&#xff0c…

2026/9/2 20:56:20

AI视频剪辑工作流:语音转文字与提示词驱动的粗剪实战

在实际的视频剪辑流程中,AI剪视频并不是某一款软件里一个神秘的“一键生成”按钮。真正关键的是你喂给它多少有效信息,以及怎样把语音转文字、AI粗剪、字幕生成、音频处理这些能力按顺序组合起来。很多人卡在中间,不是因为工具不会用&#xf…

2026/9/2 20:56:20

绝地潜兵2外观替换MOD安装指南:以VRCChocolateShibuyaMaji为例

《绝地潜兵2》装备外观类MOD里,像“VRCChocolateShibuyaMaji替换IE-12DS-42”这种命名方式,第一眼容易让人懵。它实际做的事情很直接:把游戏里原本的IE-12和DS-42这两件装备外观,替换成一套以VRCChocolateShibuyaMaji为代号风格的…

2026/9/2 20:56:20

Acknowledge 4.2振动测试软件安装配置指南:从驱动到模态分析实战

简介:Acknowledge4.2安装包是一款专为科研、工程与教学场景打造的科学数据采集与分析软件,支持数据采集卡、示波器、信号发生器等多类硬件设备接入,能够实时捕获并记录模拟或数字信号,解决复杂数据的采集与预处理问题。压缩包共63…

2026/9/2 20:56:20

Acknowledge 4.2 安装详解:从依赖准备到 ACK 模拟故障排查

简介:Acknowledge4.2是一款面向科研人员、工程师及教育工作者的科学数据采集与分析软件,可帮助完成复杂信号的采集、处理、可视化与报告生成,适用于生物医学、心理生理、工程测试等多种场景。安装包以zip格式打包,共638个文件、13…

2026/9/2 20:51:19

claude 默认授权启动,读写git权限

目标:仅当前工作目录读写,不允许碰系统/外部目录;普通用户运行,不用 sudo,避开 --dangerously‑skip‑permissions root 报错核心:不要 sudo,进入你的项目目录,创建项目本地配置 .cl…

2026/9/1 16:02:17

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/2 9:00:32

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/2 8:41:06

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/2 0:03:41

单片机毕业设计-基于单片机与蓝牙通讯的输液状态监测终端设计与开发 基于 STM32 或 51 单片机的液位‑滴速‑温度多参数输液监护装置设计(024005)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/9/2 0:03:41

DeepSeek字幕翻译实战:从API调用到批量SRT转中文的完整方案

这次我们来看一个很实用的 DeepSeek 落地场景:用 DeepSeek 把英文视频字幕自动翻译成中文。具体案例是《恶魔君》1989 年第 28 集的英转中字幕任务,标题写得很直白,但背后其实是一整套可以复用的技术流程:字幕解析、模型调用、批量…

2026/9/2 0:03:41

用Python搭建搞笑语音助手:从语音识别到语音合成全教程

当你家里摆着一台天猫精灵,却总希望语音助手偶尔“不正经”一点,不用官方腔回答问题,而是张口就接几句搞笑段子,会是什么体验?我最近动手验证了一下这个想法——没有去改装任何市面上现有的智能音箱,而是直…

2026/9/2 1:15:22

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/2 1:15:22

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/2 1:15:20

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…