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

news2024/11/25 6:32:06

创建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.coloradmin.cn/o/1405627.html

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

相关文章

【手撕C语言 第六集】函数(上)

文章目录 一、函数是什么&#xff1f;二、C语言中函数的分类&#xff1a;1.库函数1.1 如何学会使用库函数&#xff1f; 2. 自定义函数 三、函数的参数1.实际参数&#xff08;实参&#xff09;&#xff1a;2.形式参数&#xff08;形参&#xff09;&#xff1a; 四、函数的调用&a…

深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本

序列模型(Sequence Model) 基于文本内容及其前后信息进行预测 基于目标不同时刻状态进行预测 基于数据历史信息进行预测 序列模型:输入或者输出中包含有序列数据的模型 突出数据的前后序列关系 两大特点: 输入(输出)元素之间是具有顺序关系。不同的顺序,得到的结果应…

10分钟入手一套监控系统

写在前面的话 在这里&#xff0c;我将分享一些观测云的小技巧&#xff0c;让您能更好地注册、接入和利用免费额度。 pv每天是2000的免费额度&#xff0c;这里有个技巧&#xff0c;就是支持配置采样率&#xff0c;以1%的采样率来计算&#xff0c;每天也有20万的额度了就是采样设…

【方法】如何把Excel“只读方式”变成可直接编辑?

Excel在“只读方式”下&#xff0c;编辑后是无法直接保存原文件的&#xff0c;那如何可以直接编辑原文件呢&#xff1f;下面来一起看看看吧。 如果Excel设置的是无密码的“只读方式”&#xff0c;那在打开Excel后&#xff0c;会出现对话框&#xff0c;提示“是否以只读方式打开…

CTF CRYPTO 密码学-5

题目名称&#xff1a;山岚 题目描述&#xff1a; 山岚 f5-lf5aa9gc9{-8648cbfb4f979c-c2a851d6e5-c} 解题过程&#xff1a; Step1&#xff1a;根据题目提示栅栏加密 分析 观察给出的密文发现有f、l、a、g等字符有规律的夹杂的密文中间&#xff0c;看出都是每3个字符的第1…

「我在淘天做技术」智能对话新纪元:百万日活对话机器人的 LLM 落地实践

作者&#xff1a;智能小蜜团队 一、前言 阿里小蜜家族&#xff08;阿里小蜜、店小蜜、万象&#xff09;&#xff0c;从 2015 年发展至今&#xff0c;已经成为了覆盖淘天 P-C&#xff08;平台-消费者&#xff09;、B-C&#xff08;商家-消费者&#xff09;、P-B&#xff08;平台…

浅谈公有云、私有云、混合云

云计算有三种形态&#xff0c;分别是私有云、公有云和混合云。以下是它们各自的简介&#xff1a; 私有云&#xff08;Private Clouds&#xff09;&#xff1a;这种云服务是为一个客户单独使用而构建的&#xff0c;可以提供对数据、安全性和服务质量的最有效控制。公司拥有基础…

随机森林中每个树模型分裂时的特征选取方式

随机森林中每个树模型分裂时的特征选取方式 随机森林中每个树模型的每次分裂都是基于随机选取的特征子集进行分裂的。 具体来说&#xff0c;对于每个决策树&#xff0c;在每个节点的分裂过程中&#xff0c;随机森林算法会从原始特征集合中随机选择一个特征子集&#xff0c;然…

NQA测试机制—UDP Jitter测试

概念 UDP Jitter是以UDP报文为承载,通过记录在报文中的时间戳信息来统计时延、抖动、丢包的一种测试方法。Jitter(抖动时间)是指相邻两个报文的接收时间间隔减去这两个报文的发送时间间隔。 UDP Jitter测试的过程如下: 1. 源端(RouterA)以一定的时间间隔向目的端(Route…

【GitHub项目推荐--Go语言学习指南】【转载】

Go语言学习指南是一份涵盖大部分 Golang 程序员所需要掌握的核心知识&#xff0c;拥有 Go语言教程、Go开源书籍、Go语言入门教程、Go语言学习路线。零基础学习 Go语言、Go编程&#xff0c;首选 GoGuide。 地址&#xff1a;https://github.com/coderit666/GoGuide

惬意上手Python —— 装饰器和内置函数

1. Python装饰器 Python中的装饰器是一种特殊类型的函数&#xff0c;它允许用户在不修改原函数代码的情况下&#xff0c;增加或修改函数的行为。 具体来说,装饰器的工作原理基于Python的函数也是对象这一事实&#xff0c;可以被赋值给变量、作为参数传递给其他函数或者作为其他…

SpringBoot:Bean生命周期自定义初始化和销毁

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java项目分享》 《RabbitMQ》《Spring》《SpringMVC》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 前言一、Bean注解指…

什么是EJB?

什么是EJB&#xff1f; EJB (Enterprise JavaBeans) 是一种用于开发企业级应用程序的 Java 服务器端组件模型。它是一种分布式对象架构&#xff0c;用于构建可移植、可伸缩和可事务处理的企业级应用。 EJB 提供了一种将业务逻辑组件化、模块化的方式&#xff0c;使开发人员能够…

【每日一题】2.LeetCode——删除有序数组中的重复项

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有限&#xff0c;欢迎各位大佬指点&…

深度学习(3)--递归神经网络(RNN)和词向量模型Word2Vec

目录 一.递归神经网络基础概念 二.自然语言处理-词向量模型Word2Vec 2.1.词向量模型 2.2.常用模型对比 2.3.负采样方案 2.4.词向量训练过程 一.递归神经网络基础概念 递归神经网络(Recursive Neural Network, RNN)可以解决有时间序列的问题&#xff0c;处理诸如树、图这样…

算法题解析与总结(一)

不含重复字符的最长子字符串 思路 var lengthOfLongestSubstring funtion(s){// 初始化最大值、长度let max 0;let len s.length;let str ;for(let i 0; i < len; i){let index str.indexOf(s[i])if(index ! )}str }二叉树的中序遍历 给定一个二叉树的根节点 roo…

three.js从入门到精通系列教程004 - three.js透视相机(PerspectiveCamera)滚动浏览全景大图

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>three.js从入门到精通系列教程004 - three.js透视相机&#xff08;PerspectiveCamera&#xff09;滚动浏览全景大图</title><script src"js/three.js"&g…

一文读懂JavaScript DOM节点操作(JavaScript DOM节点操作详解)

一、什么是节点 DOM模型是树状结构模型&#xff0c;二组成这棵树的就是一个个点&#xff0c;在网络术语中称之为节点。 节点是一个模型中最基本的组成单位。DOM模型是由一个个节点组成的&#xff0c;DOM节点也有其不同的类型。 二、节点类型 DOM节点分为5种类型&#xff1a;…

eclipse基础操作+基础知识(一)

&#x1f58a;作者 : D. Star. &#x1f4d8;专栏 :JAVA &#x1f606;今日分享 : 电影版–花千骨 背景&#xff1a;eclipse已经安装完成。 eclipse版本&#xff1a;2020.06 tomcat版本&#xff1a;8.5 文章目录 一、进入eclipse二、创建JAVA项目三、创建Web项目1. 打开eclipse…

YTM32的HSM模块在信息安全场景中的应用

YTM32的HSM模块在信息安全场景中的应用 文章目录 YTM32的HSM模块在信息安全场景中的应用引言应用场景&#xff1a;一点点密码学基础硬件&#xff1a;YTM32的信息安全子系统HCU外设模块硬件特性基本的应用操作流程&#xff0c;以计算AES-ECB为例硬件上对处理多块数据上的一些设计…