Mysql数据库基础第二章:(八)子查询经典案例
Mysql数据库基础系列
软件下载地址
提取码:7v7u
数据下载地址
提取码:e6p9
mysql数据库基础第一章:(一)数据库基本概念
mysql数据库基础第一章:(二)mysql环境搭建
mysql数据库基础第二章:(一)基础查询
mysql数据库基础第二章:(二)条件查询
mysql数据库基础第二章:(三)排序查询
mysql数据库基础第二章:(四)常见函数
mysql数据库基础第二章:(五)分组查询
mysql数据库基础第二章:(六)连接查询
mysql数据库基础第二章:(七)子查询
mysql数据库基础第二章:(八)子查询经典案例
mysql数据库基础第二章:(九)分页查询
mysql数据库基础第二章:(十)连接查询
mysql数据库基础第三章:DML语言
mysql数据库基础第四章:DDL(数据定义语言):库表的管理、数据类型与约束条件
mysql数据库基础第五章:(一)事务
mysql数据库基础第五章:(二)视图
mysql数据库基础第六章:变量、存储过程与函数
mysql数据库基础第七章:流程控制结构
mysql数据库基础第八章:窗口函数和公用表达式(CTE)
文章目录
- Mysql数据库基础系列
- 案例数据转至:[Mysql数据库第二章:(一)基础查询](https://blog.csdn.net/weixin_45052363/article/details/122075925)
- 1. 查询工资最低的员工信息: last_name, salary
- 2. 查询平均工资最低的部门信息
- 3. 查询平均工资最低的部门信息和该部门的平均工资
- 4. 查询平均工资最高的 job 信息
- 5. 查询平均工资高于公司平均工资的部门有哪些?
- 6. 查询出公司中所有 manager 的详细信息.
- 7. 各个部门中 最高工资中最低的那个部门的 最低工资是多少
- 8. 查询平均工资最高的部门的 manager 的详细信息: last_name, department_id, email, salary
子查询作为该系列第二章较难的一部分,需要有一定的思考分析。因此,本文找了一些经典的子查询案例,并写了相应的思路分享给大家。
案例数据转至:Mysql数据库第二章:(一)基础查询
1. 查询工资最低的员工信息: last_name, salary
首先对子查询类型进行判断,此题需要查询工资最低的员工,因此需要增加筛选条件,故使用where子查询。
SELECT last_name,salary
FROM employees
WHERE salary=(
SELECT MIN(salary)
FROM employees
);
2. 查询平均工资最低的部门信息
这个题需要我们先求出按部门分组的平均工资,并找出最低的部门查询其信息,如果使用传统的思路较为繁琐,这里使用排序对工资进行排序后得到部门id。当问题较为复杂,首先对其进行分解。以本题为例,先计算平均工资
①各部门的平均工资
SELECT AVG(salary),department_id
FROM employees
GROUP BY department_id
②求出最低平均工资的部门编号
SELECT department_id
FROM employees
GROUP BY department_id
ORDER BY AVG(salary)
LIMIT 1;
③查询部门信息
SELECT *
FROM departments
WHERE department_id=(
SELECT department_id
FROM employees
GROUP BY department_id
ORDER BY AVG(salary)
LIMIT 1
);
3. 查询平均工资最低的部门信息和该部门的平均工资
SELECT d.*,ag
FROM departments d
JOIN (
SELECT AVG(salary) ag,department_id
FROM employees
GROUP BY department_id
ORDER BY AVG(salary)
LIMIT 1
) ag_dep
ON d.`department_id`=ag_dep.department_id;
4. 查询平均工资最高的 job 信息
SELECT *
FROM jobs
WHERE job_id=(
SELECT job_id
FROM employees
GROUP BY job_id
ORDER BY AVG(salary) DESC
LIMIT 1
);
5. 查询平均工资高于公司平均工资的部门有哪些?
SELECT AVG(salary),department_id
FROM employees
GROUP BY department_id
HAVING AVG(salary)>(
SELECT AVG(salary)
FROM employees
);
6. 查询出公司中所有 manager 的详细信息.
SELECT *
FROM employees
WHERE employee_id =ANY(
SELECT DISTINCT manager_id
FROM employees
);
7. 各个部门中 最高工资中最低的那个部门的 最低工资是多少
SELECT MIN(salary) ,department_id
FROM employees
WHERE department_id=(
SELECT department_id
FROM employees
GROUP BY department_id
ORDER BY MAX(salary)
LIMIT 1
);
8. 查询平均工资最高的部门的 manager 的详细信息: last_name, department_id, email, salary
SELECT
last_name, d.department_id, email, salary
FROM
employees e
INNER JOIN departments d
ON d.manager_id = e.employee_id
WHERE d.department_id =
(SELECT
department_id
FROM
employees
GROUP BY department_id
ORDER BY AVG(salary) DESC
LIMIT 1) ;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)