复盘SQL① SQLtest 01-07查询所有员工的姓名、工资以及所在部门的名称。查询每个部门的员工人数和平均工资。查询工资高于公司平均工资的员工姓名、工资和部门名称使用子查询。查询每个部门中工资最高的员工的姓名、工资和部门名称使用子查询作为临时表。查询每个员工的姓名、工资并使用case when将工资分类高于10000为高8000-10000为中低于8000为低。查询每个员工的信息包括工龄当前日期减去入职日期以年为单位。查询所有员工姓名将姓名转换为大写并连接部门名称格式为“姓名-部门名称”。#1selecte.emp_name,e.salary,d.dept_namefromemployees ejoindepartments done.dept_idd.dept_id;#2selectd.dept_name,count(*),avg(e.salary)fromemployees ejoindepartments dond.dept_ide.dept_idgroupbyd.dept_name;#3selecte.emp_name,e.salary,d.dept_namefromemployees ejoindepartments dond.dept_ide.dept_idwheree.salary(selectavg(employees.salary)fromemployees);#where 不能用函数 只能间接的使用select from 这种套娃叫做子查询selectavg(employees.salary)fromemployees;#4selectemployees.dept_id,max(employees.salary)asmaxsfromemployeesgroupbydept_id;selecte.emp_name,e.salary,d.dept_namefromemployees ejoindepartments dond.dept_ide.dept_idjoin(selectdept_id,max(salary)asmaxsfromemployeesgroupbydept_id)asmaxdonmaxd.dept_ide.dept_idandmaxd.maxse.salary;#5selecte.emp_name,e.salary,casewhene.salary10000then高whene.salary8000then中else低endas锐评fromemployees e;#6select*,timestampdiff(year,employees.hire_date,current_date)as工龄fromemployees;#7selectconcat(upper(e.emp_name),-,d.dept_name)as搞搞新意思fromemployees ejoindepartments dond.dept_ide.dept_id;序号 复盘要点1聚合函数不能直接放在WHERE中需借助子查询2子查询是独立作用域不能使用外部表的别名3子查询作为临时表派生表必须加别名4GROUPBY按什么分组结果就按什么维度聚合5CASEWHEN结构要完整有END字符串有引号6工龄计算用 TIMESTAMPDIFF 最准确7CONCAT 和 UPPER 实现字符串拼接与大小写转换8日期函数CURDATE()、TIMESTAMPDIFF()以下是修正过程1.独立王国子查询不可以使用别名.属性第一次尝试sqlselecte.emp_name,e.salary,d.dept_namefromemployees ejoindepartments dond.dept_ide.dept_idjoin(selecte.dept_id,max(e.salary)asmaxs-- ❌ 错误1子查询中用了外部别名 efrome-- ❌ 错误2子查询中用了外部别名 e 作为表名groupbye.dept_id-- ❌ 错误3子查询中用了外部别名 e)asmaxdonmaxd.dept_ide.dept_idandmaxd.maxse.salary;报错信息Tabletest05.edoesnt exist第二次尝试sqlselecte.emp_name,e.salary,d.dept_namefromemployees ejoindepartments dond.dept_ide.dept_idjoin(selecte.dept_id,max(e.salary)asmaxs-- ❌ 错误子查询中仍然用了外部别名 efromemployees-- ✅ 表名改对了groupbye.dept_id-- ❌ 错误子查询中仍然用了外部别名 e)asmaxdonmaxd.dept_ide.dept_idandmaxd.maxse.salary;报错信息 Unknowncolumne.dept_idinfield list二、修正后的正确代码sqlselecte.emp_name,e.salary,d.dept_namefromemployees ejoindepartments dond.dept_ide.dept_idjoin(selectdept_id,max(salary)asmaxs-- ✅ 去掉所有 e.直接写列名fromemployees-- ✅ 用完整的表名groupbydept_id-- ✅ 直接写列名)asmaxdonmaxd.dept_ide.dept_idandmaxd.maxse.salary;三、总结要点 说明子查询是独立作用域 子查询 ( ) 内部看不到外部定义的别名如 e只能看到自己 from 中的表外部别名只在外部有效 from employees e 定义的 e 只在外部查询有效子查询内部不能使用子查询内部要写完整表名 如 from employees不能用 from e子查询内部列名不加前缀 直接写 dept_id、salary 即可因为子查询只有这一张表不会产生歧义外部查询中可以用别名 e. 在子查询 外面e.emp_name、e.salary、e.dept_id 都是有效的四、记忆口诀子查询里别用外别名表名列名直接写外部别名管外部内外作用域不互通。

相关新闻

最新新闻

C++多线程编程7大核心错误与避坑指南:从数据竞争到性能陷阱

C++多线程编程7大核心错误与避坑指南:从数据竞争到性能陷阱

1. 项目概述:为什么C多线程编程的“坑”如此致命?干了二十多年C,从单核奔腾玩到现在的多核服务器,我最大的感触就是:多线程编程,是C从“高级语言”迈向“系统级语言”的一道分水岭。它让你能真正榨干硬件的…

2026/7/13 23:31:35
Windows 11预览版安装与测试全指南:从环境准备到性能测评

Windows 11预览版安装与测试全指南:从环境准备到性能测评

1. 先搞清楚这个版本到底适合谁测Windows 11 Build 26300.7674 属于 Insider Preview 开发版通道,不是正式推送的稳定版本。如果你只是日常办公或家用,我不建议轻易尝试这个版本——它更适合开发者、测试人员或对系统新功能有强烈好奇心的技术爱好者。这…

2026/7/13 23:31:35
SAP MIRO与MIR7 BAPI对比:3个核心差异点与5种自动化集成场景设计

SAP MIRO与MIR7 BAPI对比:3个核心差异点与5种自动化集成场景设计

SAP MIRO与MIR7 BAPI深度解析:技术差异与自动化集成实战在SAP财务模块的日常运维中,发票处理流程的效率直接影响着企业的应付账款周期和财务数据准确性。作为SAP顾问,我们经常面临一个关键选择:何时使用直接过账的MIRO事务&#x…

2026/7/13 23:31:35
流媒体内容技术分析:从数据采集到热度预测的完整框架

流媒体内容技术分析:从数据采集到热度预测的完整框架

这次我们来看一部在网飞平台创下收视纪录的现象级剧集。这部剧不仅在全球范围内引发了观剧热潮,更在技术层面展现了流媒体平台如何通过精准的内容策略和先进的技术支持实现爆款内容的传播。对于关注流媒体技术、内容分发和数据分析的读者来说,这部剧的成…

2026/7/13 23:31:35
多维聚合实战:银行风控场景下的5种pandas聚合模式

多维聚合实战:银行风控场景下的5种pandas聚合模式

1. 项目概述:为什么多维聚合不是“加个groupby”就能搞定的事 我在银行数据平台组干了八年,从最早用SQL写几十行嵌套子查询做客户分层,到后来在Spark上跑PB级交易流水,再到如今带团队设计实时风控指标引擎——所有这些经历反复验证…

2026/7/13 23:31:35
wine-app安装完全手册:从零开始到成功运行Windows应用

wine-app安装完全手册:从零开始到成功运行Windows应用

wine-app安装完全手册:从零开始到成功运行Windows应用 【免费下载链接】wine-app This repository will provide the process document and configure script to make windows apps based on wine. 项目地址: https://gitcode.com/openeuler/wine-app 前往项…

2026/7/13 23:26:34

月新闻