MySQL实战(尚硅谷)
要求

代码
# 准备数据
CREATE DATABASE IF NOT EXISTS company;USE company;CREATE TABLE IF NOT EXISTS employees(employee_id INT PRIMARY KEY,first_name VARCHAR(50),last_name VARCHAR(50),department_id INT
);DESC employees;CREATE TABLE IF NOT EXISTS departments(department_id INT PRIMARY KEY,department_name VARCHAR(50)
);DESC departments;CREATE TABLE IF NOT EXISTS salaries (employee_id INT PRIMARY KEY,salary DECIMAL(10, 2)
);DESC salaries;CREATE TABLE IF NOT EXISTS managers (manager_id INT PRIMARY KEY,department_id INT
);DESC managers;-- 插入员工信息
INSERT INTO employees (employee_id, first_name, last_name, department_id)
VALUES(1, 'John', 'Doe', 1),(2, 'Jane', 'Smith', 2),(3, 'Michael', 'Johnson', 1),(4, '图图', 'Brown', NULL),(5, 'David', 'Williams', 3),(6, 'Sarah', 'Jones', 1);-- 插入部门信息
INSERT INTO departments (department_id, department_name)
VALUES(1, 'HR'),(2, 'Finance'),(3, 'IT');-- 插入员工薪资信息
INSERT INTO salaries (employee_id, salary)
VALUES(1, 50000),(2, 60000),(3, 55000),(4, 48000),(5, 70000),(6, 52000);-- 插入经理信息
INSERT INTO managers (manager_id, department_id)
VALUES(1, 1),(2, 2),(3, 3);SHOW TABLES;# 实现
#1、找出每个部门的平均工资。 部门的信息 , 平均工资
# 员工表 和 薪资表
# 查询语法: 连表查询 -> 员工表 | 分组查询 -> 分组字段 和 聚合函数
SELECT d.department_name,AVG(s.salary) AS ssav FROM employees eLEFT JOIN salaries s ON e.employee_id =s.employee_idLEFT JOIN departments d ON e.department_id = d.department_idGROUP BY d.department_name;#2、列出每个部门的经理姓名以及他们管理的员工数目。
#2.1 查询每个部门以及部门对应的经理的名称 SELECT * FROM departments dLEFT JOIN managers m ON d.department_id = m.department_idLEFT JOIN employees e01 ON e01.department_id =m.department_id;#2.2 查询每个员工以及员工对应的部门以及部门的名称
SELECT d.department_name, CONCAT(e1.first_name,e1.last_name) AS manager_name , COUNT(1) ct FROM departments d LEFT JOIN managers m ON d.department_id = m.department_idLEFT JOIN employees e1 ON e1.employee_id = m.manager_idLEFT JOIN employees e2 ON e2.department_id = d.department_idGROUP BY manager_name,d.department_name ;#3、列出没有分配到部门的员工。
SELECT * FROM employees WHERE department_id IS NULL; #4、列出每个部门的员工数目以及该部门的总工资。SELECT e.department_id,AVG(s.salary) , COUNT(1) FROM employees e LEFT JOIN salaries s ON e.employee_id = s.employee_idGROUP BY e.department_id;#5、列出每个员工的名字以及他们的薪资等级(低于平均工资的员工为低级别,高于平均工资的员工为高级别)。# id , 姓名 , 薪水等级 -> 比较 平均薪水 [流程语句 case when | 聚合函数单独使用,窗口函数]
SELECT e.employee_id,CONCAT(e.first_name,e.last_name) , s.salary ,CASE WHEN s.salary < AVG(salary) OVER () THEN '低级别'ELSE '高级别'END AS salary_level FROM employees e LEFT JOIN salaries s ON e.employee_id = s.employee_id; #6、找出薪资排名前10的员工。
SELECT * FROM employees e LEFT JOIN salaries s ON e.employee_id = s.employee_idORDER BY s.salary DESC LIMIT 1,1;#7、找出至少有2名员工的部门。
# 至少有2名员工的部门 > 2 分组后的条件
# where 分组前的条件
# on 主 = 外
# having -> group by 分组后的条件
SELECT department_id , COUNT(1) num FROM employees e GROUP BY department_id HAVING num > 2;#8、找出每个部门的平均工资,但排除经理的薪资。
SELECT e.department_id,AVG(s.salary) FROM employees e LEFT JOIN salaries s ON e.employee_id = s.employee_idWHERE e.employee_id NOT IN (SELECT manager_id FROM managers)GROUP BY e.department_id#9、列出每个部门的员工姓名、薪资,以及该部门内工资排名。
# rank() 多行函数->窗口函数使用
SELECT e.first_name,s.salary,e.department_id , RANK() OVER(PARTITION BY e.department_id ORDER BY s.salary DESC)FROM employees e LEFT JOIN salaries s ON e.employee_id = s.employee_id#10、找出每个部门薪资最低的员工。# from where select SELECT * FROM (SELECT e.first_name,s.salary,e.department_id , RANK() OVER(PARTITION BY e.department_id ORDER BY s.salary ASC) numFROM employees e LEFT JOIN salaries s ON e.employee_id = s.employee_id ) temp WHERE temp.num = 1 ;DROP DATABASE IF EXISTS company;
相关文章:
MySQL实战(尚硅谷)
要求 代码 # 准备数据 CREATE DATABASE IF NOT EXISTS company;USE company;CREATE TABLE IF NOT EXISTS employees(employee_id INT PRIMARY KEY,first_name VARCHAR(50),last_name VARCHAR(50),department_id INT );DESC employees;CREATE TABLE IF NOT EXISTS departments…...
华为p10 plus 鸿蒙2.0降级emui9.1.0.228
需要用到的工具 HiSuite Proxy V3 华为手机助手11.0.0.530_ove或者11.0.0.630_ove应该都可以。 官方的通道已关闭,所以要用代理,127.0.0.1端口7777 https://www.firmfinder.ml/ https://professorjtj.github.io/v2/ https://hisubway.online/articl…...
C# Modbus RTU学习记录
继C# Modbus TCP/IP学习记录后,尝试串口通信。 操作步骤: 1.使用Visual Studio安装Nuget包NModbus.Serial。 2.使用Modbus Slave应用程序,工具栏Connection项,单击Connect,弹窗Connection Setup,修改Con…...
AI+Xmind自动生成测试用例(思维导图格式)
一、操作步骤: 步骤1:创建自动生成测试用例智能体 方式:使用通义千问/豆包智能体生成,以下两个是我已经训练好的智能体,直接打开使用即可 通义智能体: https://lxblog.com/qianwen/share?shareId=b0cd664d-5001-42f0-b494-adc98934aba5&type=agentCard 豆包智能…...
单片机 - 位运算详解(``、`|`、`~`、`^`、`>>`、`<<`)
单片机中的位运算详解(&、|、~、^、>>、<<) 位运算是单片机编程(C/C)中经常使用的技巧,用于高效地操作寄存器、I/O 端口和数据。以下是各位运算符的详细解析,并结合单片机实际应用举例。 …...
chrome插件开发之API解析-chrome.tabs.query
chrome.tabs.query 是 Chrome 扩展开发中用于查询浏览器标签页信息的 API。它允许你根据指定的条件获取当前浏览器中所有匹配的标签页。这个 API 返回一个 Promise,解析后会得到一个包含匹配标签页信息的数组。 常见用途 获取当前活动标签页:可以获取当…...
(二)手眼标定——概述+原理+常用方法汇总+代码实战(C++)
一、手眼标定简述 手眼标定的目的:让机械臂和相机关联,相机充当机械臂的”眼睛“,最终实现指哪打哪 相机的使用前提首先需要进行相机标定,可以参考博文:(一)相机标定——四大坐标系的介绍、对…...
3D点云的深度学习网络分类(按照作用分类)
1. 3D目标检测(Object Detection) 用于在点云中识别和定位目标,输出3D边界框(Bounding Box)。 🔹 方法类别: 单阶段(Single-stage):直接预测3D目标位置&am…...
【Linux网络-NAT、代理服务、内网穿透】
一、NAT技术 1.NAT技术背景 之前我们讨论了,IPV4协议中,IP地址数量不充足的问题 NAT技术当前解决IP地址不够用的主要手段,是路由器的一个重要功能 NAT(网络地址转换,Network Address Translation)是一种…...
Windows 和 Linux 操作系统架构对比以及交叉编译
操作系统与架构兼容性详解 1. 可执行文件格式:PE vs ELF Windows: PE (Portable Executable) 格式 详细解释: PE 格式是 Windows 下的可执行文件标准 包含多个区段(Sections),如代码段、数据段、资源段 文件头包含…...
heapq库的使用——python代码
Python中heapq库的基础使用方法和示例代码,包含详细注释说明: 1. 基本功能 heapq 实现的是最小堆(父节点值 ≤ 子节点值),核心操作包括: 插入元素:heappush(heap, item)弹出最小值:…...
新手村:逻辑回归-理解02:逻辑回归中的伯努利分布
新手村:逻辑回归-理解02:逻辑回归中的伯努利分布 伯努利分布在逻辑回归中的潜在含义及其与后续推导的因果关系 1. 伯努利分布作为逻辑回归的理论基础 ⭐️ 逻辑回归的核心目标是: 建模二分类问题中 目标变量 y y y 的概率分布。 伯努利分布(…...
golang Error的一些坑
golang Error的一些坑 golang error的设计可能是被人吐槽最多的golang设计了。 最经典的err!nil只影响代码风格设计,而有一些坑会导致我们的程序发生一些与我们预期不符的问题,开发过程中需要注意。 errors.Is判断error是否Wrap不符合预期 …...
【干货,实战经验】nginx缓存问题
文章目录 案例背景出现的问题:定位到问题解决方式修改配置修改后的nginx配置 案例背景 有2个服务器A 和B,A是一个动态ip经常变公网ip,B是一个云服务器,公网ip固定. 于是我通过ddns ,找了个域名C,动态解析A服务器上的公…...
分布式理论:CAPBASE理论
1 CAP理论 1.1 简介 CAP也就是Consistency(一致性)、Availability(可用性)、Partition Tolenrance(分区容错性)这三个单词首字母组合。 在理论计算机科学中,CAP定理(CAP theorem&…...
大数据学习(86)-Zookeeper去中心化调度
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…...
uniapp再次封装uni-nav-bar导航栏组件
<!-- components/custom-nav-bar/custom-nav-bar.vue --> <template><view class"custom-nav" :style"{ backgroundColor: bgColor }"><!-- 状态栏占位 --><view class"status-bar" :style"{ height: statusBar…...
ngx_http_index_t
定义在 src\http\modules\ngx_http_index_module.c typedef struct {ngx_str_t name;ngx_array_t *lengths;ngx_array_t *values; } ngx_http_index_t; 该结构体用于 存储和解析 index 指令中单个索引文件的信息 ,支持静态…...
深入解析Flink Kafka Connector的分布式流数据采集架构与底层实现
目录 1. Flink Kafka连接器的分布式流采集架构 1.1 架构组成 1.2 分布式流模型 2. 数据分区分配策略 3. 为什么重写序列化和偏移量管理 3.1 与Flink分布式架构集成 3.2 与Flink检查点机制集成同时承接多级并行架构 3.3 OffsetsInitializer与细粒度偏移量控制 3.4 与Fl…...
vcd波形转仿真激励
我们使用vivado的ila抓取波形后,常常希望用该波形作为激励参与仿真。稍微复杂的项目中手动输入的工作量巨大,几乎是不可能采取的方式。我的方法是保存ila波形为vcd格式文件,用python解析vcd文件,转换成仿真激励的代码。 python代码…...
【STM32】知识点介绍二:GPIO引脚介绍
文章目录 一、概述二、GPIO的工作模式三、寄存器编程 一、概述 GPIO(英语:General-purpose input/output),即通用I/O(输入/输出)端口,是STM32可控制的引脚。STM32芯片的GPIO引脚与外部设备连接起来,可实现与外部通讯、…...
【AI】NLP
不定期更新,建议关注收藏点赞。 目录 transformer大语言模型Google Gemma疫情网民情绪识别 整体框架 baseline构建 模型调参、模型优化、其他模型 数据trick、指标优化、magic feature 数据增强、伪标签、迁移学习 模型融合sklearn中TFIDF参数详解 频率阈值可以去掉…...
Go 代理爬虫
现在注册,还送15美金注册奖励金 --- 亮数据-网络IP代理及全网数据一站式服务商 使用代理服务器,通过 Colly、Goquery、Selenium 进行网络爬虫的基础示例程序 本仓库包含两个分支: basic 分支包含供 Go Proxy Servers 这篇文章改动的基础代码…...
【NLP 43、大模型技术发展】
目录 一、ELMo 2018 训练目标 二、GPT-1 2018 训练目标 三、BERT 2018 训练目标 四、Ernie —— baidu 2019 五、Ernie —— Tsinghua 2019 六、GPT-2 2019 七、UNILM 2019 八、Transformer - XL & XLNet 2019 1.模型结构 Ⅰ、循环机制 Recurrence Mechanism Ⅱ、相对位置…...
在普通用户下修改root用户密码
1 从普通用户切换到root用户 sudo -s 再输入密码。 2 输入passwd ,会提醒你输入当前用户密码,验证后会提醒你输入root用户密码。 3 切换到root用户,使用修改过的密码登陆。 4 成功进入root用户。...
【每日算法】Day 6-1:哈希表从入门到实战——高频算法题(C++实现)
摘要 :掌握高频数据结构!今日深入解析哈希表的核心原理与设计实现,结合冲突解决策略与大厂高频真题,彻底掌握O(1)时间复杂度的数据访问技术。 一、哈希表核心思想 哈希表(Hash Table) 是一种基于键值对的…...
go命令使用
查看配置信息 go env配置go国内源 export GO111MODULEon export GOPROXYhttps://goproxy.cn测试 go install github.com/jesseduffield/lazydockerlatesthttps://github.com/jesseduffield/lazydocker...
深入 SVG:矢量图形、滤镜与动态交互开发指南
1.SVG 详细介绍 SVG(Scalable Vector Graphics) 是一种基于 XML 的矢量图形格式,用于描述二维图形。 1. 命名空间 (Namespace) 命名空间 URI:http://www.w3.org/2000/svg 用途:在 XML 或 XHTML 中区分不同标记语言的…...
SPPAS安装及问题汇总
SPPAS下载地址 文件找不到,可能是MAC的自动化操作问题,解决方案有二: 方案一: 直接查看SPPAS中的readme,运行sppas.command 方案二: 在自动化脚本中添加 export PATH/usr/local/bin:$PATH...
LINUX基础 [三] - 进程创建
目录 前言 进程创建的初次了解(创建进程的原理) 什么是fork函数? 初识fork函数 写时拷贝 fork函数存在的意义 fork调用失败的原因 进程终止 运行完毕结果不正确 main函数返回 库函数函数exit 系统调用接口_exit 进程异常终止 进…...
