4. MySQL多表查询练习题

news2024/9/28 23:33:53

 数据库表

CREATE TABLE departments (
    dept_no     CHAR(4)         PRIMARY KEY COMMENT '部门编码',
    dept_name   VARCHAR(40)     NOT NULL UNIQUE COMMENT '部门名称'
) COMMENT '部门表';

CREATE TABLE dept_emp (
    emp_no      INT             NOT NULL COMMENT '部门编码',
    dept_no     CHAR(4)         NOT NULL COMMENT '雇员ID',
    FOREIGN KEY (emp_no)  REFERENCES employees (emp_no)    ON DELETE CASCADE,
    FOREIGN KEY (dept_no) REFERENCES departments (dept_no) ON DELETE CASCADE,
    PRIMARY KEY (emp_no,dept_no)
) COMMENT '雇员与部门关系表';

CREATE TABLE salaries (
    emp_no      INT             NOT NULL COMMENT '雇员ID',
    salary      INT             NOT NULL COMMENT '工资',
    month       INT             NOT NULL COMMENT '月份',
    level       INT             NOT NULL COMMENT '工资等级',
    FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE
) COMMENT '薪资表'; 

-- 向雇员表中插入数据
insert into employees values
('100','1990-08-19','JACK','M','20160811'),
('101','1970-08-12','TOM','M','20100606'),
('102','1996-03-19','JAMES','M','20140101'),
('103','1987-04-28','KETTY','F','20130910'),
('104','1983-05-19','JIM','F','20160418');

-- 向部门表中插入数据
insert into departments values
('1001','A'),
('1002','B'),
('1003','C'),
('1004','D');

-- 向部门与雇员关系表中插入数据
insert into dept_emp values
('100','1001'),
('101','1001'),
('102','1002'),
('103','1003'),
('104','1004');

-- 想工资表中插入数据
insert into salaries values
('100','12000','201601',2),
('101','9000','201601',1),
('102','90000','201601',10),
('103','2300','201601',1),
('104','4000','201601',1),
('100','12000','201602',2),
('101','9000','201602',1),
('102','90000','201602',10),
('103','2300','201602',1),
('104','4000','201602',1),
('100','12000','201603',2),
('101','9000','201603',1),
('102','90000','201603',10),
('103','2300','201603',1),
('104','4000','201603',1),
('100','12000','201604',2),
('101','9000','201604',1),
('102','90000','201604',10),
('103','2300','201604',1),
('104','4000','201604',1);

1.查看部门表中的所有记录

select * from departments

2.查看员工表中的所有记录

select * from employees

3.查询所有员工所属的部门

select a.emp_no,a.name,b.dept_no,b.dept_name from employees a

          left join dept_emp b on a.emp_no = b.emp_no

          left join departments c on c.dept_no = a.dept_no

4.查询属于A部门的员工

select a.name from employees a

          left join dept_emp b on a.emp_no = b.emp_no

          left join departments c on c.dept_no = b.dept_no where c.dept_name = 'A'

5.查询属于A部门员工的每月平均工资

SELECT AVG(salary),d.month FROM employees a

              LEFT JOIN dept_emp b ON a.emp_no = b.emp_no

              LEFT JOIN departments c ON c.dept_no = b.dept_no

              LEFT JOIN salaries d ON a.emp_no = d.emp_no WHERE c.dept_name = 'A' group by d.month

6.查询所有员工的薪水总和

select sum(salary) from salaries

7.查询各个部门的员工平均工资

select avg(a.salary),b.dept_no from salaries a   join dept_emp b on a.emp_no = b.emp_no group by b.dept_no

8.查询不同工资水平下各有多少员工

SELECT COUNT(DISTINCT emp_no),LEVEL FROM salaries GROUP BY LEVEL

9.查询名字中包含M的员工的每月平均工资

SELECT AVG(salary),MONTH FROM salaries a

              LEFT JOIN employees b ON a.emp_no = b.emp_no WHERE b.name LIKE '%M%' GROUP BY MONTH

10.查询所有女性中工资最高的员工

select distinct b.name,b.emp_no from salaries a

           left join employees b on a.emp_no = b.emp_no where salary = ( select max(salary) from salaries a left join employees b on a.emp_no = b.emp_no where b.gender = 'F') and b.gender = 'F'

11.查询每月员工工资之和大于30000的部门有哪些

SELECT SUM(a.salary),b.dept_no,a.month,c.dept_name FROM salaries a

               JOIN dept_emp b ON a.emp_no = b.emp_no

               LEFT JOIN departments c ON c.dept_no = b.dept_no GROUP BY b.dept_no,a.month

               HAVING SUM(a.salary) > 30000

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

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

相关文章

vue路由配置公共布局layout

本篇实现三段式界面 公共布局文件 首先在src下新建layoutPc文件夹&#xff0c;再给layoutPc新建组件 header 、bottm、main三个文件基本确定了一个页面的基本架子&#xff0c;然后再新建一个index.vue文件 comment/AppMain.vue <template><section class"ap…

卷积神经网络狗猫数据集的分类

卷积神经网络狗猫数据集的分类 环境搭建 安装Anaconda 具体安装过程&#xff0c;请自行百度 配置TensorFlow、Keras 创建虚拟环境 输入下面命令&#xff1a; conda create -n ppqppl_tfl python3.6 #tf1是自己为创建虚拟环境取的名字&#xff0c;后面python的版本可以根据自己需…

MyBatis-Plus教程,不敢说是最详细的

一、MyBatis-Plus 1.简介 MyBatis-Plus (opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window)的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 我们的愿景是成为 MyBatis 最好的搭档&…

基于SpringBoot+vue的在线动漫信息平台设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

SAM 在遥感图像分割上的应用

文章目录 导读方法SAM 模型SAM 的实例分割扩展 RSPrompter概述特征聚合器锚点式Prompter查询式Prompter 实验在 WHU 上的结果在NWPU上的结果在SSDD上的结果 总结参考 Title: RSPrompter: Learning to Prompt for Remote Sensing Instance Segmentation based on Visual Foundat…

Spring Boot 整合视图层技术 FreeMarker

大家好&#xff01;我是今越。简单记录一下在 Spring Boot 框架中如何整合 Freemarker 及使用。 FreeMarker 简介 FreeMarker 是一款模板引擎&#xff1a;即一种基于模板和要改变的数据&#xff0c;并用来生成输出文本&#xff08; HTML 网页&#xff0c;电子邮件&#xff0c;…

Python3 实例(二) | 菜鸟教程(二十)

目录 一、Python 将列表中的头尾两个元素对调 &#xff08;一&#xff09;定义一个列表&#xff0c;并将列表中的头尾两个元素对调。 &#xff08;二&#xff09;实例1 &#xff08;三&#xff09;实例2 &#xff08;四&#xff09;实例3 二、Python 将列表中的指定位置的…

新一代版本依赖管理Vesion Catalog的探索与实践

前言 前段时间使用新版本的Android Studio创建了个项目想测试点东西&#xff0c;项目创建后发现整个Gradle的依赖管理发生了巨大的变化。 先说一下我使用的Android Studio的版本如下。 创建项目后主要变化如下&#xff1a; 原本的.gradle变成了.gradle.kts&#xff0c;也就是…

商业综合体智能管理系统

自主研发的商业综合体智能管理系统和智能硬件&#xff0c;并针对行业不同需求&#xff0c;推出了不同行业的创新解決方案和服务。该系统能够提高商业综合体的管理效率和安全性&#xff0c;为商业综合体的经营和服务增加更多的价值。全自动智能完成无需人工干预&#xff0c;从而…

【企业架构框架】SOGAF架构类型/模式

模式概述 Salesforce 运营、治理和架构框架 (SOGAF) 将新窗口企业架构框架中的 MIT-CISR Salesforce 实施和程序。在此框架内&#xff0c;有四种通用架构类型&#xff1a; 单一系统核心模型模板多系统 每个特定的架构类型对应一个支持 SOGAF 运营模型。架构类型的选择还应包括…

前端搭建名言生成器(内含源码)

目录 前言 名言生成器 页面搭建 功能实现 前言 今天呢我们来给大家展示的&#xff0c;就是一个非常非常简单的名言生成器&#xff0c; 那么它的功能的非常简单&#xff0c;就是我们通过点击按钮&#xff0c;然后可以生成名人名言&#xff0c;然后我们也可以点击按钮将它分享到…

C++图形开发(1):graphics图形库简介与安装

文章目录 1.引入2.安装&#xff08;1&#xff09;在官网下载安装包&#xff08;2&#xff09;安装 3.检验 1.引入 为了帮助大家实现真正的、更有意思的C开发&#xff0c;本人决定开一个C图形开发的专栏&#xff0c;来制作更多的有意思的游戏、程序。 首先我们要了解的&#x…

MySQL 分库分表实战之ShardingSpare(分库分表+读写分离)

文章目录 概要一、安装二、配置2.1、 通用配置2.2、 分片配置2.3、读写分离 三、演练3.1、读写分离3.2、分库分表3.3、分库分表读写分离 4、总结 概要 市面上MySQL分库分表中间件还是很多的&#xff0c;主要分为两大类&#xff1a;应用层依赖类中间件&#xff08;比如sharding…

电气自动化入门——总览

目录 学习路线 电气设备组成部分 设备驱动类设备元件 常用电机类型 电机控制器类型​编辑 气缸类设备驱动 设备控制与数据采集监控部分 小型PLC 中大型PLC 数据采集与监控 HMI——人机交互界面 IPC——工控机 设备检测反馈元件——传感器 学习路线 电气设备组成部分 …

第 352 场LeetCode周赛

A 最长奇偶子数组 枚举满足条件的左端点能延续的最长右端点 class Solution { public:int longestAlternatingSubarray(vector<int> &nums, int threshold) {int res 0;int n nums.size();for (int i 0; i < n;) {if (nums[i] % 2 0 && nums[i] <…

Spring Boot 中的 Spring Cloud Hystrix:原理和使用

Spring Boot 中的 Spring Cloud Hystrix&#xff1a;原理和使用 什么是 Spring Cloud Hystrix&#xff1f; Spring Cloud Hystrix 是一个用于处理分布式系统中故障的库。它实现了熔断器模式&#xff0c;可以防止由于故障服务的连锁反应而导致整个系统崩溃。Spring Cloud Hyst…

RabbitMq应用延时消息

一.建立绑定关系 package com.lx.mq.bind;import com.lx.constant.MonitorEventConst; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.*; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annota…

innovus: 如何让两个generate clock balance skew group?

如题&#xff0c;在sdc约束中两个generate clock被设置到同一个clock group中&#xff0c;工具虽然会生成对应的两个skew group&#xff0c;但是阅读ccoot_spec发现工具并没有让两个skew group进行balance&#xff0c;这时就需要手动设置balance skew group。 方法如下: 在读…

回归预测 | MATLAB实现WOA-DBN鲸鱼算法优化深度置信网络的多输入回归预测

回归预测 | MATLAB实现WOA-DBN鲸鱼算法优化深度置信网络的多输入回归预测 目录 回归预测 | MATLAB实现WOA-DBN鲸鱼算法优化深度置信网络的多输入回归预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 基于鲸鱼算法优化深度置信网络(WOA-DBN)的数据回归预测&…