MySQL数据库——多表查询练习2

news2024/9/20 12:37:10

一、练习素材

创建表

--创建部门表dept
create table dept (
dept1 int ,
dept_name varchar(11));

--创建员工表emp
create table emp (
sid int ,
name varchar(11),
age int,
worktime_start date,
incoming int,
dept2 int);

插入数据

--部门表插入数据
insert into dept values
(101,'财务'),
(102,'销售'),
(103,'IT技术'),
(104,'行政');

--员工表插入数据
insert into emp 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);

查询表中数据如下图

二、练习题目

    1.找出销售部门中年纪最大的员工的姓名

    2.求财务部门最低工资的员工姓名

    3.列出每个部门收入总和高于9000的部门名称

    4.求工资在7500到8500元之间,年龄最大的人的姓名及部门

    5.找出销售部门收入最低的员工入职时间

    6.财务部门收入超过2000元的员工姓名

    7.列出每个部门的平均收入及部门名称

    8.IT技术部入职员工的员工号

    9.财务部门的收入总和;

    10.先按部门号大小排序,再依据入职时间由早到晚排序员工信息表

    11.找出哪个部门还没有员工入职;

    12.列出部门员工收入大于7000的部门编号,部门名称;

    13.列出每一个部门的员工总收入及部门名称;

    14.列出每一个部门中年纪最大的员工姓名,部门名称;

    15.求李四的收入及部门名称

    16.列出每个部门中收入最高的员工姓名,部门名称,收入,并按照收入降序

    17.列出部门员工数大于1个的部门名称

    19.查找张三所在的部门名称

参考答案

注:14题和16题我用到的是嵌套查询

--1.找出销售部门中年纪最大的员工的姓名
mysql> select name from dept d join emp e on d.dept1=e.dept2 
    -> where dept_name='销售'
    -> order by age desc
    -> limit 1;

--2.求财务部门最低工资的员工姓名
mysql> select name from dept d join emp e on d.dept1=e.dept2
    -> where dept_name='财务'
    -> order by incoming asc
    -> limit 1;

--3.列出每个部门收入总和高于9000的部门名称
mysql> select dept_name from dept d join emp e on d.dept1=e.dept2 
    -> group by dept_name
    -> having sum(incoming)>9000;

--4.求工资在7500到8500元之间,年龄最大的人的姓名及部门
mysql> select name,dept_name from dept d join emp e on d.dept1=e.dept2
    -> where incoming between 7500 and 8500 
    -> order by age desc
    -> limit 1;

--5.找出销售部门收入最低的员工入职时间
mysql> select worktime_start from dept d join emp e on d.dept1=e.dept2
    -> where dept_name='销售'
    -> order by incoming asc
    -> limit 1;

--6.财务部门收入超过2000元的员工姓名
mysql> select name from dept d join emp e on d.dept1=e.dept2 
    -> where dept_name='财务' and incoming>2000;

--7.列出每个部门的平均收入及部门名称
mysql> select avg(incoming),dept_name from dept d join emp e on d.dept1=e.dept2
    -> group by dept_name;

--8.IT技术部入职员工的员工号
mysql> select sid from dept d join emp e on d.dept1=e.dept2
    -> where dept_name='IT技术';

--9.财务部门的收入总和;
mysql> select sum(incoming) from dept d join emp e on d.dept1=e.dept2
    -> where dept_name='财务';

--10.先按部门号大小排序,再依据入职时间由早到晚排序员工信息表
mysql> select * from dept d join emp e on d.dept1=e.dept2
    -> order by dept1 asc,worktime_start asc;

--11.找出哪个部门还没有员工入职;
mysql> select dept_name from dept d left join emp e on d.dept1=e.dept2
    -> where name is NULL;

--12.列出部门员工收入大于7000的部门编号,部门名称;
mysql> select distinct dept_name,dept1 from dept d join emp e on d.dept1=e.dept2
    -> where incoming>7000;

--13.列出每一个部门的员工总收入及部门名称;
mysql> select sum(incoming),dept_name from dept d join emp e on d.dept1=e.dept2
    -> group by dept_name;

--14.列出每一个部门中年纪最大的员工姓名,部门名称;
mysql> select name,dept_name,age from dept d right join emp e on d.dept1=e.dept2
    -> where(
    -> select count(*) from emp e2 
    -> where e2.age>e.age and dept1=dept2
    -> )=0;

--15.求李四的收入及部门名称
mysql> select incoming,dept_name from dept d join emp e on d.dept1=e.dept2
    -> where name='李四';

--16.列出每个部门中收入最高的员工姓名,部门名称,收入,并按照收入降序
mysql> select name,dept_name,incoming from dept d right join emp e on d.dept1=e.dept2
    -> where (
    -> select count(*) from emp e2
    -> where e2.incoming>e.incoming and dept1=dept2
    -> )=0
    -> order by incoming desc;

--17.列出部门员工数大于1个的部门名称
mysql> select dept_name from dept d join emp e on d.dept1=e.dept2
    -> group by dept_name
    -> having count(*)>1;

--19.查找张三所在的部门名称
mysql> select dept_name from dept d join emp e on d.dept1=e.dept2
    -> where name='张三';

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

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

相关文章

C++ 栈和队列(stack and queue)语法使用及底层实现原理

本篇文章会对C中的容器stack和queue用法进行详解,也包含对优先队列(priority_queue)的讲解。同时会模拟实现stack、queue和priority_queue底层。希望本篇文章会对你有所帮助! 目录 一、stack 栈 1、1 什么是适配器 1、2 stack 语法…

C++ 线程池实现

思路 创建多个工作线程同时维护一个公共的任务队列, 任务队列非空时通过信号量唤醒阻塞等待的工作线程, 工作线程通过互斥锁互斥的从任务队列中取出任务, 然后执行任务 实现 信号量类 class sem {//封装信号量类 public:sem(int num 0) {if (sem_init(&m_sem, 0, num)…

Kernel-Pwn-FGKASLR保护绕过

FGKASLR FGASLR(Function Granular KASLR)是KASLR的加强版,增加了更细粒度的地址随机化。因此在开启了FGASLR的内核中,即使泄露了内核的程序基地址也不能调用任意的内核函数。 layout_randomized_image 在fgkaslr.c文件中存在着…

支持中文手写和多画布的Handraw

什么是 Handraw ? Handraw 是支持中文手写和多画布的 Excalidraw 白板工具。 官网上项目名称还是 Excalidraw-CN,所以 Handraw 应该是基于 Excalidraw 二开的,特点是支持中文手写字体和多画布 官方也提供了免费使用的站点:https://handraw.t…

ModaHub魔搭社区:向量数据库Zilliz Cloud插入 Entity教程

目录 开始前 插入单个 Entity 批量插入 Entity 准备数据 插入数据 写入操作 本文介绍如何将 Entity 插入到 Zilliz Cloud 集群中的 Collection。 Entity 是 Collection 中的基本数据单元。同一个 Collection 中的 Entity 具有相同的属性,这些属性共同定义在 Schema 中…

低代码开发平台助力解决企业开发效率问题

编者按:随着企业应用需求的不断增加,提高企业开发效率已经成为许多企业的目标。传统的开发方法显然不适用,开发平台通过可视化拖拉拽搭建等易用性和高扩展性可以帮助企业解决这个问题。 关键词:可视化开发、私有化部署、前后端分离…

设计模式--------行为型模式

行为型模式 行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间…

飞控学习笔记-IMU姿态算法

扩展卡尔曼滤波算法 传感器融合算法 卡尔曼滤波算法 最小二乘法 毕卡逼近法 对上式进行泰勒展开 得到四元数各阶近似算法: 梯度下降算法 梯度下降 互补滤波算法 chatgpt解释: 互补滤波(Complementary Filter)算法是一种常用…

zk-IMG:对抗虚假信息

1. 引言 前序博客: ZKP图片授权——PhotoProof:proofs of permissible photo edits Daniel Kang等人2022年论文《ZK-IMG: Attested Images via Zero-Knowledge Proofs to Fight Disinformation》,在该论文中提供了一个简单的deep fake ima…

高级编程技巧之Python装饰器详解

概要 装饰器是Python中一种强大而灵活的编程技巧,它可以用于修改或扩展函数的行为,同时又不需要修改函数的源代码。本文将介绍Python中的装饰器的基本概念、使用方法以及高级技巧,帮助你从入门到精通装饰器的使用。 一、基本概念 在深入学习…

【面试必考点】这一次带你彻底学会this的指向问题

文章目录 前言一、this的指向问题1.1 全局中的this1.2 普通函数中的this1.3 定时器中的this1.4 事件处理函数中的this1.5 构造函数中的this1.6 构造函数静态方法中的this1.7 箭头函数中的this 二、修改函数中的this指向2.1 call2.2 apply2.3 bind 三、 this指向练习3.1 某小游戏…

【软件分析/静态分析】chapter6 课程08 指针分析(Pointer Analysis)

🔗 课程链接:李樾老师和谭天老师的: 南京大学《软件分析》课程08(Pointer Analysis)_哔哩哔哩_bilibili 目录 第六章 指针分析(Pointer Analysis) 6.1 为什么需要指针分析 6.2 指针分析的基本…

AMAT 工业输入输出模块0100-77037

W;① ⑧ 0 ③ 0 ① 7 7 7 ⑤ 9 AMAT 工业输入输出模块0100-77037 0100-76124 0100-71313 0100-71311 0100-71309 0100-71278 0100-71267 0100-71229 0100-71224 0100-20100 IGBT 和 IGCT 是四层器件,乍一看并没有什么不同。但是,当您“ 深入了解…

Spring Boot原理分析(三):IoC容器的继承层次

文章目录 一、Spring Ioc容器的继承层次1.BeanFactory2.ListableBeanFactory3.HierarchicalBeanFactory4.ApplicationContext 二、常用的ApplicationContext的实现类1.ClassPathXmlApplicationContext(基于XML配置)2.AnnotationConfigApplicationContext…

[Android]使用jni实现高斯模糊

1.高斯模糊的原理: 根据周边的像素值来确定自己的像素值,平均值,最大值,最小值,正太分布值 2.均值模糊blur 函数声明: CV_EXPORTS_W void blur( InputArray src, OutputArray dst,Size ksize, Point anc…

python绘制分组条形图

文章目录 数据导入多组条形图堆叠条形图 数据导入 我们经常会遇到对比多个统计量随时间变化的图像,比如想知道中国、美国以及欧盟最近几年GDP变化,如下表所示,单位是万亿美元。 中国美国欧盟201813.8920.5315.98201914.2821.3815.69202014.…

转换或是克隆的虚拟机无法联网,网络服务无法启动

新转换的虚拟机,无法联网,启动网络服务,报错: systemctl start network.service job for network.service failed because the control process exited with error code. 查看网络服务状态,systemctl status network…

SpringMVC 中的控制器如何处理文件上传

SpringMVC 中的控制器如何处理文件上传 Spring MVC 是一个基于 Java 的 Web 框架,它是 Spring 框架的一部分,提供了一系列的组件和工具,帮助开发人员构建 Web 应用程序。其中,控制器是 Spring MVC 中的核心组件之一,它…

SpringMVC 中的控制器如何返回 JSON 数据

SpringMVC 中的控制器如何返回 JSON 数据 SpringMVC 是一个基于 Spring 框架的 Web 框架,它提供了一种方便的方式来处理 HTTP 请求和响应。在 SpringMVC 中,控制器是用来处理请求的组件,它们负责接收请求、处理请求并返回响应。在本文中&…

三大城市分会场精彩呈现—2023架构·可持续未来峰会圆满收官!

2023年6月30日,由The Open Group主办的2023架构可持续未来峰会三大城市分会场成功举办,也代表着本次The Open Group半年度架构峰会圆满收官! 本次大会以“可持续未来”为主题,采用“13”,即北京主会场上海/成都/深圳三…