MySQL---多表分组查询综合练习

创建dept表

CREATE TABLE dept (

deptno INT(2) NOT NULL COMMENT '部门编号',

dname VARCHAR (15) COMMENT '部门名称',

loc VARCHAR (20) COMMENT '地理位置'

);

添加dept表主键

mysql> alter table dept add primary key(deptno);          

Query OK, 0 rows affected (0.02 sec)                      

Records: 0  Duplicates: 0  Warnings: 0

dept表插入数据

INSERT INTO dept (deptno,dname,loc)VALUES (10,'财务部','高新四路');

INSERT INTO dept (deptno,dname,loc)VALUES (20,'人事部','科技二路');

INSERT INTO dept (deptno,dname,loc)VALUES (30,'销售部','长安区');

INSERT INTO dept (deptno,dname,loc)VALUES (40,'运输部','雁塔区');

查询dept表内容

mysql> select * from dept;  

创建emp表

CREATE TABLE emp(

empno INT(4) NOT NULL COMMENT '员工编号',

ename VARCHAR(10) COMMENT '员工名字',

job VARCHAR(10) COMMENT '职位',

mgr INT(4) COMMENT '上司',

hiredate DATE COMMENT '入职时间',

sal INT(7) COMMENT '基本工资',

comm INT(7) COMMENT '补贴',

deptno INT(2) COMMENT '所属部门编号'

);

emp表添加主键

mysql> alter table emp add primary key(empno);     

Query OK, 0 rows affected (0.01 sec)               

Records: 0  Duplicates: 0  Warnings: 0 

emp表添加外键约束    

在MySQL中,可以使用alter  table 语句来添加外键约束。以下是基本的语法:

ALTER TABLE table_name
ADD FOREIGN KEY (column_name) REFERENCES other_table(other_column);
在这个语句中:

  • table_name是你想要添加外键的表的名称。
  • column_name是你想要设置为外键的列的名称。
  • other_table是包含外键引用的表的名称。
  • other_column是在other_table中的列的名称。

 ALTER TABLE emp ADD CONSTRAINT f_ed_key  FOREIGN KEY (deptno)   REFERENCES dept(deptno);

emp表中插入数据

INSERT INTO `emp` VALUES('7369','张倩','办事员','7902','2002-12-17','820',NULL,'20');

INSERT INTO `emp` VALUES('7499','刘博','售货员','7698','1992-02-20','1900','300','30');

INSERT INTO `emp` VALUES('7521','李兴','售货员','7698','1995-07-22','1250','500','30');

INSERT INTO `emp` VALUES('7566','李雷','人事部长','7839','1991-04-02','975',NULL,'20');

INSERT INTO `emp` VALUES('7654','刘浩','售货员','7698','1991-09-28','1250','1400','30');

INSERT INTO `emp` VALUES('7698','刘涛','销售部长','7839','1997-05-01','2850',NULL,'30');

INSERT INTO `emp` VALUES('7782','华仔','人事部长','7839','1995-06-09','2450',NULL,'10');

INSERT INTO `emp` VALUES('7788','张飞','人事专员','7566','1998-04-19','3000',NULL,'20');

INSERT INTO `emp` VALUES('7839','马晓云','董事长',NULL,'1991-11-17','5000',NULL,'10');

INSERT INTO `emp` VALUES('7844','马琪','售货员','7698','1996-09-08','1500','0','30');

INSERT INTO `emp` VALUES('7876','李涵','办事员','7788','1997-05-23','1100',NULL,'20');

INSERT INTO `emp` VALUES('7900','李小涵','销售员','7698','1993-2-13','950',NULL,'30');

INSERT INTO `emp` VALUES('7902','张三','人事组长','7566','1992-10-08','3000',NULL,'20');

INSERT INTO `emp` VALUES('7934','张三丰','人事长','7782','1997-06-23','1300',NULL,'10');

查询emp表的内容

mysql> select * from emp;

 1.按照部门编号分组,求出每个部的人数,平均工资

#在 MySQL 中,group by 语句用于根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 count , sum , avg 等函数。

注意:

当在查询中使用 group by 语句时,只能在 select 语句中包含分组列或使用聚合函数的列。否则,将会报错。

mysql> select deptno 部门号,count(*) 部门的人数,avg(sal) 平均工资 from emp group by deptno;  

2.按照职位分组,求出每个职位的最高和最低工资

mysql> select job 职位,max(sal) 最高工资,min(sal) 最低工资 from  emp group by job; 

3.计算出每个各职位的平均工资

mysql> select job 职位,avg(sal) from emp group by job; 

4.查询出每个部门的名称、部门的人数、平均工资

#  在MySQL中,inner join 是一个非常重要的操作,它允许我们将两个或多个表中匹配的行连接在一起。

inner  join on  语法使用 on 关键字来指定连接条件。当我们需要连接两个表时,需要指定一个列或表达式作为连接条件。

mysql> select dname 部门名称,count(*) 部门人数,avg(sal) 平均工 资 from emp e

inner join dept d on e.deptno=d.deptno

group by dname;   

5.要求统计出每个部门的详细信息,并且要求这些部门的平均工资高于2000;

mysql> select d.deptno 部门编号,d.dname 部门名称,loc 位置,count(*) 人数 ,avg(sal) 平均工资 from emp e

inner join dept d on e.deptno=d.deptno

group by dname,d.deptno,loc having avg(sal)>2000;

6.要求查询出工资比华仔还要高的全部雇员信息

SQL语句分析:先找到“华仔”的工资,然后再利用子查询

mysql> select sal from emp where ename='华仔';

子查询:

# 在WHERE子句中使用子查询,可以使用比较运算符,例如=,>,<等将子查询返回的单个值与WHERE子句中的表达式进行比较。

注意:

子查询可以在任何使用表达式的地方使用,并且必须在括号中关闭。

mysql> select * from emp where sal > (select sal from emp where ename='华仔');

7.要求查询出高于公司平均工资的全部雇员信息

将题目信息进行分解,先找到平均工资

mysql> select avg(sal) from emp;  

利用子查询,找到高于公司平均工资的全部雇员信息

mysql> select * from emp where sal>(select avg(sal) from emp); 

 8.查询出每个部门的编号、名称、位置、部门人数、平均工资

#在MySQL中,left outer  join 是一种连接查询,它从左表返回所有的行,即使在右表中没有匹配的行。如果在右表中没有匹配的行,结果是NULL。

mysql> select d.deptno 部门编号,dname 名称,loc 位置,count(*) 部门人数,avg(sal) from dept d   left outer join emp e on d.deptno=e.deptno

group by d.deptno,d.dname,d.loc;  

9.列出至少有一个员工的所有部门。

# 在MySQL中,having 子句主要用于在group  by 子句对结果进行分组后,对分组后的数据进行筛选和过滤。它允许我们对分组后的结果应用聚合函数,并基于聚合函数的结果进行条件过滤,从而得到我们需要的最终结果集。

mysql> select dname 部门名称,count(*) 员工人数 from emp e inner join

dept d on e.deptno=d.deptno group by dname having count(*)>=1;  

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

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

相关文章

MetaGPT中提到的SOP

MetaGPT框架中的提及的SOP概念指的是什么&#xff0c;有什么优点和缺点&#xff0c;为什么要使用SOP? 在MetaGPT框架中&#xff0c;SOP&#xff08;Set of Procedures&#xff09;指的是一套标准化的流程和步骤&#xff0c;用于指导模型完成特定任务。SOP可以帮助模型更好地理…

CPMS靶场练习

关键&#xff1a;找到文件上传点&#xff0c;分析对方验证的手段 首先查看前端发现没有任何上传的位置&#xff0c;找到网站的后台&#xff0c;通过弱口令admin 123456可以进入 通过查看网站内容发现只有文章列表可以进行文件上传&#xff1b;有两个图片上传点 图片验证很严格…

ffmpeg使用手册

ffmpeg使用手册 文章目录 ffmpeg使用手册ffmpeg是什么指令总结1.查看ffmpeg版本2.mkv转mp43.裁剪 .mkv 视频4.不调节帧率&#xff0c;尽可能保证原视频质量的情况下将原始视频压缩4.1 crf4.2 preset 5.调节视频帧率6.调节帧率&#xff0c;尽可能保证原视频质量的情况下将原始视…

图论基本知识--->最短路练习--->最小生成树

图论基本概念&#xff1a; 自环 重边 孤点 简单图 有向图&#xff0c;无向图 简单图&#xff1a; 无向图的度数 有向图的度数&#xff1a;出度&#xff0c;入度 每个图的最大度&#xff0c;最小度 完全图&#xff08;无向图&#xff09;&#xff1a; 完全图&#xff…

a16z Web3行业展望 2024:新的一年,新的理念,新的方式

原文标题&#xff1a;《new year, new ideas, new ways》 撰文&#xff1a;a16z Crypto 编译&#xff1a;Carl&#xff0c;Techub News 原文链接&#xff1a;a16z Web3行业展望 2024&#xff1a;新的一年&#xff0c;新的理念&#xff0c;新的方式 a16z 此前发布了2024 年「…

ubuntu使用docker compose一键部署项目

1、将前面手动部署的容器和镜像全部删除 docker rmi hmall (hmall镜像名) docker rmi image_id rmi 是删除多个 rm是删除一个 2、执行命令 docker compose up -d http://192.168.79.129:18080/search.html 访问安装成功&#xff01; 该ip是虚拟机ubuntu的ip 3、docker-compos…

pnpm使用

文章目录 前言一、安装二、设置镜像三、使用总结如有启发&#xff0c;可点赞收藏哟~ 前言 pnpm 全称 performant npm&#xff0c;意思为 高性能的 npm 速度快、节约磁盘空间、支持 monorepo、安全性高。 一、安装 npm install -g pnpm or brew install pnpm二、设置镜像 #…

Vue.js在养老院管理系统前端开发中的应用与优化

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

笨蛋学设计模式行为型模式-解释器模式【23】

行为型模式-解释器模式 8.10解释器模式8.10.1概念8.10.2场景8.10.3优势 / 劣势8.10.4解释器模式可分为8.10.5解释器模式8.10.6实战8.10.6.1题目描述8.10.6.2输入描述8.10.6.3输出描述8.10.6.4代码 8.10.7总结 8.10解释器模式 8.10.1概念 ​ 解释器模式用于定义一个语言的文法…

php.2安装Imagick扩展

安装imagemagick apt-get install imagemagick libmagickwand-dev libmagickcore-dev安装imagemagick扩展 /usr/local/php/bin/phpize ./configure --with-php-config/usr/local/php/bin/php-config make make install打开php.ini的imagick扩展 extensionimagick验证是否安装…

【Java程序员面试专栏 专业技能篇】MySQL核心面试指引(二):核心机制策略

关于MySQL部分的核心知识进行一网打尽,包括三部分:基础知识考察、核心机制策略、性能优化策略,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 本篇Blog为第二部分:核心机制策略,子节点表示追问或同级提问 日志机制 关于MySQL的几…

牛客周赛 Round 18 解题报告 | 珂学家 | 分类讨论计数 + 状态DP

前言 整体评价 前三题蛮简单的&#xff0c;T4是一个带状态的DP&#xff0c;这题如果用背包思路去解&#xff0c;不知道如何搞&#xff0c;感觉有点头痛。所以最后还是选择状态DP来求解。 欢迎关注 珂朵莉 牛客周赛专栏 珂朵莉 牛客小白月赛专栏 A. 游游的整数翻转 这题最好…

tsconfig.json配置详解

使用vite创建vue3项目中会自动生成三个tsconfig相关的文件&#xff0c;分别是&#xff1a;tsconfig.json、tsconfig.node.json、tsconfig.app.json。tsconfig.node.json是专门用来配置vite.config.ts文件的编译规则&#xff0c;tsconfig.app.json则是用来定义项目中其他文件的t…

RTDETR最强结构图 | 包含模型整体结构图 | 全模块展开图 | AiFi模块展开图

文章目录 模型基础结构图AIFI模块结构图模型全模块展开图这一专栏为基于Ultralytics项目的RT-DETR魔改版本,与百度飞桨框架中的RT-DETR相比,除了框架外几乎没有区别。 本专栏旨在为那些渴望通过改进RT-DETR算法发表论文的同学提供全方位支持。每一篇文章都包含完整的改进代码…

chrome浏览器Extension插件开发框架对比和介绍

想开发chrome浏览器插件的话&#xff0c;如果没有一个好的框架支持&#xff0c;那么你只能手写js和html实现了&#xff0c;这样做的话&#xff0c;可能效率没有那么高&#xff0c;所以github上就有一些牛人来定制化了这些操作&#xff0c;将react和vue等开发框架快速集成&#…

kafka的基本使用--学习笔记

catalyst引擎 作用:将SparkSql转换成spark rdd任务提交进行计算 解析器 将sparksql代码解析成语法树(未解析的逻辑查询计划)分析器 将语法树解析成解析后的逻辑查询计划对逻辑查询计划进行属性和关系关联检验优化器 将解析后的逻辑查询计划进行优化, 得到优化后的逻辑查询计划…

【C++进阶07】哈希表and哈希桶

一、哈希概念 顺序结构以及平衡树中 元素关键码与存储位置没有对应关系 因此查找一个元素 必须经过关键码的多次比较 顺序查找时间复杂度为O(N) 平衡树中为树的高度&#xff0c;即O( l o g 2 N log_2 N log2​N) 搜索效率 搜索过程中元素的比较次数 理想的搜索方法&#xff1a…

测试不拘一格——掌握Pytest插件pytest-random-order

在测试领域&#xff0c;测试用例的执行顺序往往是一个重要的考虑因素。Pytest插件 pytest-random-order 提供了一种有趣且灵活的方式&#xff0c;让你的测试用例能够以随机顺序执行。本文将深入介绍 pytest-random-order 插件的基本用法和实际案例&#xff0c;助你摆脱固定的测…

ICCV2023 | MCD: Misalign, Contrast then Distill:重新思考VLP中的错位

论文标题: Misalign, Contrast then Distill: Rethinking Misalignments in Language-Image Pretraining 论文地址&#xff1a;ICCV 2023 Open Access Repository 代码&#xff1a;None LG AI Research 一、问题提出 SLIP发现&#xff0c;在CLIP中引入增强&#xff08;特别…

第30关 k8s容器运行时安全监控 - Falco

------> 课程视频同步分享在今日头条和B站 大家好&#xff0c;我是博哥爱运维。 我们前面讲到prometheus监控、K8S集群事件监控kube-eventer&#xff0c;这些都只是资源使用层面上的监控&#xff0c;对于集群的安全层面监控&#xff0c;我们也需要做好监控手段&#xff0c…