MySQL课堂练习(多表查询练习)

题目

1.找出销售部门中年纪最大的员工的姓名
2.求财务部门最低工资的员工姓名
3.列出每个部门收入总和高于9000的部门名称
4.求工资在7500到8500元之间,年龄最大的人的姓名及部门
5.找出销售部门收入最低的员工入职时间
6.财务部门收入超过2000元的员工姓名一
7.列出每个部门的平均收入及部门名称
8.运维部入职员工的员工号
9.财务部门的收入总和;
10.先按部门号大小排序,再依据入职时间由早到晚排序员工信息表
11.找出哪个部门还没有员工入职;
12.列出部门员工收入大于7000的部门编号,部门名称:
13.列出每一个部门的员工总收入及部门名称;
14.列出每一个部门中年纪最大的员工姓名,部门名称;
15.求李四的收入及部门名称
16.列出部门员工数大于1个的部门名称

创建库并插入数据

mysql> create  table  emp_new(sid int, name varchar(11), age int, worktime_start date, incoming int, dept2 int );
Query OK, 0 rows affected (0.04 sec)mysql> insert into emp_new values (1789,'张三',35,'1980/1/1',4000,101), (1674,'李四',32,'1983/4/1',3500,101), (1776,'王五',24,'1990/7/1',2000,101), (1568,'赵六',57,'1970/10/11',7500,102), (1564,'荣七',64,'1963/10/11',8500,102), (1879,'牛八',55,'1971/10/20',7300,103);mysql> select * from emp_new;
+------+------+------+----------------+----------+-------+
| sid  | name | age  | worktime_start | incoming | dept2 |
+------+------+------+----------------+----------+-------+
| 1789 | 张三 |   35 | 1980-01-01     |     4000 |   101 |
| 1674 | 李四 |   32 | 1983-04-01     |     3500 |   101 |
| 1776 | 王五 |   24 | 1990-07-01     |     2000 |   101 |
| 1568 | 赵六 |   57 | 1970-10-11     |     7500 |   102 |
| 1564 | 荣七 |   64 | 1963-10-11     |     8500 |   102 |
| 1879 | 牛八 |   55 | 1971-10-20     |     7300 |   103 |
+------+------+------+----------------+----------+-------+
6 rows in set (0.00 sec)mysql> create table dept(dept1 int, dept_name varchar(11));
Query OK, 0 rows affected (0.04 sec)mysql> insert into dept values(101,"财务"),(102,"销售"),(103,"运维"),(104,"行政");
Query OK, 4 rows affected (0.02 sec)
Records: 4  Duplicates: 0  Warnings: 0mysql> select * from dept;
+-------+-----------+
| dept1 | dept_name |
+-------+-----------+
|   101 | 财务      |
|   102 | 销售      |
|   103 | 运维      |
|   104 | 行政      |
+-------+-----------+
4 rows in set (0.00 sec)

 查询语句

#1.找出销售部门中年纪最大的员工的姓名
mysql> select name,age from emp_new where age=(select max(age) from emp_new where dept2=(select dept1 from dept where dept_name='销售'));
+------+------+
| name | age  |
+------+------+
| 荣七 |   64 |
+------+------+
1 row in set (0.00 sec)###第二种方法
mysql> select name,age from dept a,emp_new b where a.dept1=b.dept2 anddept_name='销售' order by age desc limit 1;
+------+------+
| name | age  |
+------+------+
| 荣七 |   64 |
+------+------+
1 row in set (0.00 sec)#2.求财务部门最低工资的员工姓名
mysql> select name from emp_new where incoming=(select min(incoming) from emp_new where dept2=(select dept1 from dept where dept_name='财务'));
+------+----------+
| name | incoming |
+------+----------+
| 王五 |     2000 |
+------+----------+
1 row in set (0.00 sec)#3.列出每个部门收入总和高于9000的部门名称
mysql> select dept_name as '部门',sum(incoming) '总工资' from emp_new,dept where emp_new.dept2=dept.dept1 group by dept_name having sum(inco
ming)>9000;
+------+--------+
| 部门 | 总工资 |
+------+--------+
| 财务 |   9500 |
| 销售 |  16000 |
+------+--------+
2 rows in set (0.00 sec)#4.求工资在7500到8500元之间,年龄最大的人的姓名及部门
mysql> select name,dept_name-> from emp_new-> join dept on emp_new.dept2 = dept.dept1-> where emp_new.incoming between 7500 and 8500-> and age = (->     select max(age)->     from emp_new->     where incoming between 7500 and 8500-> );
+------+-----------+
| name | dept_name |
+------+-----------+
| 荣七 | 销售      |
+------+-----------+
1 row in set (0.00 sec)#5.找出销售部门收入最低的员工入职时间
mysql> select worktime_start from emp_new inner join dept on emp_new.d
ept2=dept.dept1 where dept_name="销售" order by incoming limit 1;
+----------------+
| worktime_start |
+----------------+
| 1970-10-11     |
+----------------+
1 row in set (0.00 sec)#6.财务部门收入超过2000元的员工姓名
mysql> select name from emp_new join dept on emp_new.dept2 = dept.dept1 where dept_name='财务' and incoming > 2000;
+------+
| name |
+------+
| 张三 |
| 李四 |
+------+
2 rows in set (0.00 sec)#7.列出每个部门的平均收入及部门名称
mysql> select dept_name '部门名称',round(avg(incoming),2) '平均收入' from emp_new join dept on emp_new.dept2 = dept.dept1 group by dept_name;
+----------+----------+
| 部门名称 | 平均收入 |
+----------+----------+
| 财务     |  3166.67 |
| 销售     |  8000.00 |
| 运维     |  7300.00 |
+----------+----------+
3 rows in set (0.00 sec)#8.运维部入职员工的员工号
mysql> select sid from emp_new inner join dept on emp_new.dept2=dept.dept1 where dept_name='运维';
+------+
| sid  |
+------+
| 1879 |
+------+
1 row in set (0.00 sec)#9.财务部门的收入总和;
mysql> select sum(incoming) as '收入总和' from emp_new inner join depton emp_new.dept2=dept.dept1 where dept_name='财务';
+----------+
| 收入总和 |
+----------+
|     9500 |
+----------+
1 row in set (0.00 sec)#10.先按部门号大小排序,再依据入职时间由早到晚排序员工信息表
mysql> select * from emp_new order by dept2 desc, worktime_start;
+------+------+------+----------------+----------+-------+
| sid  | name | age  | worktime_start | incoming | dept2 |
+------+------+------+----------------+----------+-------+
| 1879 | 牛八 |   55 | 1971-10-20     |     7300 |   103 |
| 1564 | 荣七 |   64 | 1963-10-11     |     8500 |   102 |
| 1568 | 赵六 |   57 | 1970-10-11     |     7500 |   102 |
| 1789 | 张三 |   35 | 1980-01-01     |     4000 |   101 |
| 1674 | 李四 |   32 | 1983-04-01     |     3500 |   101 |
| 1776 | 王五 |   24 | 1990-07-01     |     2000 |   101 |
+------+------+------+----------------+----------+-------+
6 rows in set (0.00 sec)#11.找出哪个部门还没有员工入职;
mysql> select dept_name from dept left join emp_new on dept.dept1=emp_
new.dept2 where sid is null;
+-----------+
| dept_name |
+-----------+
| 行政      |
+-----------+
1 row in set (0.00 sec)#12.列出部门员工收入大于7000的部门编号,部门名称:
mysql> select dept2,dept_name from emp_new join dept on emp_new.dept2=
dept.dept1 where incoming > 7000;
+-------+-----------+
| dept2 | dept_name |
+-------+-----------+
|   102 | 销售      |
|   102 | 销售      |
|   103 | 运维      |
+-------+-----------+
3 rows in set (0.00 sec)#13.列出每一个部门的员工总收入及部门名称;
mysql> select dept_name,sum(incoming) from emp_new join dept on emp_ne
w.dept2=dept.dept1 group by dept_name;
+-----------+---------------+
| dept_name | sum(incoming) |
+-----------+---------------+
| 财务      |          9500 |
| 销售      |         16000 |
| 运维      |          7300 |
+-----------+---------------+
3 rows in set (0.00 sec)#14.列出每一个部门中年纪最大的员工姓名,部门名称;
mysql> select name,dept_name from emp_new join dept on emp_new.dept2=d
ept.dept1-> where(emp_new.dept2,emp_new.age)-> in (select dept2,max(age) from emp_new group by dept2);
+------+-----------+
| name | dept_name |
+------+-----------+
| 张三 | 财务      |
| 荣七 | 销售      |
| 牛八 | 运维      |
+------+-----------+
3 rows in set (0.00 sec)#方法二
mysql> select name as "姓名", dept_name as "部门名称" from dept,(select max(age) age,dept2 from emp_new group by dept2) em, emp_new where dept.dept1=em.dept2 and em.age=emp_new.age;
+------+----------+
| 姓名 | 部门名称 |
+------+----------+
| 张三 | 财务     |
| 荣七 | 销售     |
| 牛八 | 运维     |
+------+----------+
3 rows in set (0.00 sec)#15.求李四的收入及部门名称
mysql> select incoming , dept_name from emp_new join dept on emp_new.d
ept2=dept.dept1 where name='李四';
+----------+-----------+
| incoming | dept_name |
+----------+-----------+
|     3500 | 财务      |
+----------+-----------+
1 row in set (0.00 sec)#16.列出部门员工数大于1个的部门名称
mysql> select dept_name from emp_new join dept on emp_new.dept2=dept.dept1-> group by dept_name-> having count(emp_new.sid)>1;
+-----------+
| dept_name |
+-----------+
| 财务      |
| 销售      |
+-----------+
2 rows in set (0.00 sec)#方法二
mysql> select dept_name as 部门名称 from dept inner join (select count(*) as 员工数,dept2 from emp_new group by dept2) as de on dept.dept1=de.dept2 where de.员工数 > 1;
+----------+
| 部门名称 |
+----------+
| 财务     |
| 销售     |
+----------+
2 rows in set (0.00 sec)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/4132.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++第十五讲:异常

C第十五讲:异常 1.异常的概念和使用1.1异常的抛出和捕获1.2异常抛出和捕获的注意事项1.3异常的重新抛出1.4异常规范 2.标准库的异常 1.异常的概念和使用 1.1异常的抛出和捕获 异常的抛出和捕获的过程分为三个阶段: 1.异常的抛出: 使用throw对…

HTML<bdo>标签

例子 指定文本方向&#xff1a; <bdo dir"rtl"> This text will go right-to-left. </bdo> <!DOCTYPE html> <html> <body> <h1>The bdo element</h1> <p>This paragraph will go left-to-right.</p> …

Git:问题解决办法 及 Tips 总结

目录 查看历史记录及比较区别查看所有提交的历史记录查看提交的详细历史记录查看提交之间的差异点击文件操作历史&#xff0c;筛选出所有改动过此文件的提交任意两个提交之间的比较&#xff08;开发及查BUG常用&#xff09; 在需要版本回滚的情况下处理方法短时间内无法彻查BUG…

uniApp开通uniPush1.0个推,SpringBoot集成uniPush1.0个推

uniApp开通unipush1.0个推&#xff0c;SpringBoot程序集成 一、APP开通unipush1.0个推(商户App源码仅支持1.0个推) 1.app模块配置开通推送 2.应用开通推送 3.开通后点击消息推送菜单会看到如下页面 完成以上步骤后 此时android 仅支持在线推送。 4.配置各厂商离线推送 暂未…

[JavaScript] 深入理解流程控制结构

文章目录 1. **if-else 语句**基本语法&#xff1a;示例&#xff1a;扩展&#xff1a;else if 2. **switch-case 语句**基本语法&#xff1a;示例&#xff1a;注意事项&#xff1a; 3. **for 循环**基本语法&#xff1a;示例&#xff1a;扩展&#xff1a;for-in 和 for-of 4. *…

庄小焱——2024年博文总结与展望

摘要 大家好&#xff0c;我是庄小焱。岁末回首&#xff0c;2024 年是我在个人成长、博客创作以及生活平衡方面收获颇丰的一年。这一年的经历如同璀璨星辰&#xff0c;照亮了我前行的道路&#xff0c;也为未来的发展奠定了坚实基础。 1. 个人成长与突破 在 2024 年&#xff0c…

八大排序--冒泡排序

目录 什么是冒泡排序&#xff1f; 算法步骤 举例说明 代码实现&#xff08;java&#xff09; 什么是冒泡排序&#xff1f; 冒泡排序&#xff08;英语&#xff1a;Bubble sort&#xff09;是一种简单的排序算法。由于在算法的执行过程中&#xff0c;较小的元…

新阿里云买服务器配置需手动配置80端口

新买阿里云服务器需手动配置80&#xff0c;端口才可以访问nginx CentOS系统 安装nginx 1. 安装 Nginx yum install nginx 2. 启动 Nginx 服务 systemctl start nginx 3. 修改默认网页 cd /usr/share/nginx/ echo "666" >index.html cat index.html 访问ngin最后…

如何下载对应城市的地理json文件

这里采用的是阿里地图工具进行查找&#xff1a; DataV.GeoAtlas地理小工具系列 由阿里云DataV数据可视化团队出品,多年深耕数据可视化领域,数据大屏业务开拓者和领航者。致力用震撼而清晰的视觉语言,让更多人读懂大数据,受惠数据驱动的决策方式 第一步打开网站 &#xff1a; …

“libcudart,so.1 1.0“ loss解决方案

sudo find /usr/ -name libcudart.so.11.0 2 > /dev/null参考链接&#xff1a;1、https://stackoverflow.com/questions/70967651/could-not-load-dynamic-library-libcudart-so-11-0 2、https://blog.csdn.net/weixin_43786241/article/details/109203995

通过图形界面展现基于本地知识库构建RAG应用

1. 客户需求 快速完成概念验证(PoC)通过图形界面快速完成演示本地私有数据对比不同模型和成本&#xff0c;决定如何部署 2. 阿里云基于本地知识库构建RAG应用 参考方案&#xff1a; 百炼本地知识库方案 解决方案&#xff1a; FastAPI Gradio Llamaindex qwen-plus 主要三大…

安路FPGA开发工具TD:问题解决办法 及 Tips 总结

安路科技&#xff08;Anlogic&#xff09;是一家专注于高性能、低功耗可编程逻辑器件&#xff08;FPGA&#xff09;设计和生产的公司。其提供的开发工具TD&#xff08;TangDynasty&#xff09;是专门为安路FPGA系列产品设计的集成开发环境&#xff08;IDE&#xff09;。以下是对…

聚铭网络6款产品入选CCIA《网络安全专用产品指南》

近日&#xff0c;中国网络安全产业联盟CCIA正式发布《网络安全专用产品指南》&#xff08;第二版&#xff09;&#xff08;以下简称《指南》&#xff09;。聚铭网络凭借突出技术优势、创新能力以及市场积累&#xff0c;旗下安全产品成功入选防火墙、网络安全审计、日志分析、网…

渗透笔记1

第一天 工具&#xff1a;cs cobalt strike 4.9 / msf kali &#xff08;自带 Ubuntu&#xff09; cs cobalt strike 4.9&#xff1a;server-client server部署在云服务器上&#xff0c;client分别在各地&#xff0c;与server相连接&#xff1b;连接上后就可以共享上线主机。…

计算机网络 (51)鉴别

前言 计算机网络鉴别是信息安全领域中的一项关键技术&#xff0c;主要用于验证用户或信息的真实性&#xff0c;以及确保信息的完整性和来源的可靠性。 一、目的与重要性 鉴别的目的是验明用户或信息的正身&#xff0c;对实体声称的身份进行唯一识别&#xff0c;以便验证其访问请…

《Vue3 九》动画

Vue 提供了一些内置组件和对应的 API 来完成动画&#xff0c;利用它们可以方便地实现动画效果。 <transition> 内置组件&#xff1a; Vue 提供了 <transition> 内置组件&#xff0c;可以给任意元素或组件添加进入/离开时的动画效果。在条件渲染、动态组件、改变 …

人工智能之数学基础:线性代数中的线性相关和线性无关

本文重点 在线性代数的广阔领域中,线性相关与线性无关是两个核心概念,它们对于理解向量空间、矩阵运算、线性方程组以及人工智能等问题具有至关重要的作用。 定义与直观理解 当存在一组不全为0的数x1,x2,...,xn使得上式成立的时候,那么此时我们可以说向量组a1,a2...,an…

【王树森搜素引擎技术】相关性03:文本匹配(TF-IDF、BM25、词距)

链路上的相关性模型 召回海选 打分量&#xff1a;数万模型&#xff1a;文本匹配分数线性模型或双塔BERT模型 粗排 打分量&#xff1a;数千模型&#xff1a;双塔BERT&#xff0c;或单塔BERT模型&#xff08;交叉&#xff09; 精排 打分量&#xff1a;数百模型&#xff1a;单塔B…

owasp SQL 注入-03 (原理)

1: 先看一下注入界面: 点submit 后&#xff0c;可以看到有语法报错&#xff0c;说明已经起作用了: 报如下的错误: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near at line 1 2:…

项目实战--网页五子棋(游戏大厅)(3)

我们的游戏大厅界面主要需要包含两个功能&#xff0c;一是显示用户信息&#xff0c;二是匹配游戏按钮 1. 页面实现 hall.html <!DOCTYPE html> <html lang"ch"> <head><meta charset"UTF-8"><meta name"viewport"…