09 MySQL--操作真题

1. not in

在这里插入图片描述
用一条 SQL 语句,查询出每门课程都大于 80 分的人。

分析:

  1. 去重查询出存在课程小于 80 分的人,设为集合A
  2. 查询不在集合 A 中的人
# 第一步:找小于等于80分的学员姓名
select distinct name from t_student where fenshu <= 80# 第二步:not in
select distinct name from t_student where name not in(select distinct name from t_student where fenshu <= 80)

2

在这里插入图片描述

其中,两个表的关联字段为申请单号。

这是典型的一对一结构,为了避免单表字段过多而进行了拆分。可以认为是 主键共享 策略

2.1 查询身份证号为440401430103082的申请日期。

#首先从g_cardapplydetail表中找到身份证号为440401430103082的记录,
#然后通过关联字段g_applyno连接到g_cardapply表以获取申请日期。
SELECT ca.g_applydate 
FROM g_cardapply ca
JOIN g_cardapplydetail cad ON ca.g_applyno = cad.g_applyno 
WHERE cad.g_idcard = '440401430103082';

2.2 查询同一个身份证号码有两条以上记录的身份证号码及记录个数。

select g_idcard ,count(g_idcard)
from g_cardapplydetail 
group by g_idcard 
having count(g_idcard) >= 2

2.3 将身份证号码为 440401430103082 的记录在两个表中的申请状态均改为 07。

更新多表,且两表存在外键约束,有固定语法

UPDATE g_cardapply
join g_cardapplydetail 
on g_cardapply.g_applyno = g_cardapplydetail.g_applyno 
AND g_cardapplydetail.g_idcard = '440401430103082'
SET g_cardapply.g_state = '07',
g_cardapplydetail.g_state = '07'

2.4 删除两张表中所有姓李的记录。

DELETE ca,cad 
FROM g_cardapply ca join g_cardapplydetail cad 
on ca.g_applyno=cad.g_applyno 
where cad.g_name like '李%';

3.

在这里插入图片描述

3.1 统计课程不及格[0-59】、良[60~80]、优[81-100]分别多少个。

分析:参看02节,这是属于枚举类型的逻辑判断,即按照条件进行分类。
类似的还有订单金额划分订单等级,应使用简单 CASE 函数

本题更进一步,需要在完成分类后统计每一类的数量

#FROM 后就会执行 CASE 函数,因此 CASE 中起的别名可以在GROUP BY 中用
#将表中的每一条数据都过一遍 CASE,得到一个新造列,该列名为 score_range,列的内容只能为 不及格、优、良
#GROUP BY 按照三个等级分组,就将一列 score_range 缩小为了仅三行数据
#最终,执行 SELECT,分组函数 count 在 分组的基础上执行,即统计每一组的总数.
SELECT
CASE		WHEN score >= 0 AND score <= 59 THEN '不及格' WHEN score >= 60 AND score <= 80 THEN '良' WHEN score >= 81 AND score <= 100 THEN'优' ELSE '其他' END AS score_range,count(*) 
FROM t_stu_score 
GROUP BY score_range;

在这里插入图片描述

计算每科都及格的人的平均成绩。

# 和第一题非常像,因为一个人对应多科,关键是先找出所有不及格的科目,然后排除这些名字
select name, avg(score) as avgscore 
from stuscore 
where name not in(select name from stuscore where score < 60)
group by name;

4.

在这里插入图片描述

4.1 查询每个部门中“钳工”的平均工资。

# 多个部门内都有钳工,分组时应注意用两个条件分组;不管仅用部门,还是仅用工种进行分组都是不准确的
SELECT dname,job,AVG(sal) AS avg_sal
FROM t_EMPLOY
WHERE job = '钳工' 
GROUP BY dname, job;

在这里插入图片描述

4.2 查询每个部门中“钳工”的平均工资高于2000的部门。

#在前一题的基础上进一步筛选,即分组后用 HAVING 再筛
SELECT dname
FROM t_employ
WHERE job='钳工'
GROUP BY dname,job
HAVING AVG(sal)>2000

5.

在这里插入图片描述
在这里插入图片描述
注意:字段名必须以下划线或字母开始,且只能由下划线、字母、数字组成。若字段名字中包含其他符号,对于该字段创建及后续操作时,必须以反引号包裹字段名,以让 MySQL 识别。

5.1 查询所有居住地与工作的公司在同一城市的员工的姓名。

简单的三表连接,每次 JOIN 连接一个表

SELECT e.`person-name`
FROM employee e
JOIN works w
ON e.`person-name` = w.`person-name`
JOIN company c
ON w.`company-name` = c.`company-name`
WHERE e.city=c.city;

5.2 查询比公司 B 的所有员工收入都高的所有员工的姓名。

使用子查询,先查出公司 B 的最高员工工资 ,再用所有员工工资逐条对比

SELECT `company-name`,`person-name`,salary
FROM works
# 第一个条件实际上是不需要的,因为子查询中已经查出了 SBC 公司的最高工资,如果再从整张表寻找比这个工资还高的人,这个人不可能在SBC
WHERE `company-name` <> 'Small Bank Corporation' 
AND salary > (select max(salary) as maxsal from works where `company-name`='Small Bank Corporation');

在这里插入图片描述

5.3 找出平均工资在 10000 以上的公司及其平均工资。

# GROUP BY -- 分组函数 -- HAVING, 因此在分组函数中起别名后能被 HAVING 识别
SELECT `company-name` ,avg( salary ) avgsal
FROM works 
GROUP BY `company-name` 
HAVING avgsal > 10000;

在这里插入图片描述

6.

数据库中仅有月薪字段(month_salary),要求查询所有员工的年薪,并以年薪(year_salary)输出:

分析:

  1. 查询操作中,字段可以参与数学运算
  2. as 起别名,但实际上可以省略
#以下两句效果完全一致
select month_salary as year_salary from emp
select month_salary year_salary from emp

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

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

相关文章

Transformer - 特征预处理

Transformer - 特征预处理 flyfish 原始数据 train_data.values [[ 5.827 2.009 1.599 0.462 4.203 1.34 30.531][ 5.76 2.076 1.492 0.426 4.264 1.401 30.46 ][ 5.76 1.942 1.492 0.391 4.234 1.31 30.038][ 5.76 1.942 1.492 0.426 4.234 1.31…

Linux命令超详细介绍

目录 安装 Linux的目录结构&#xff1a; Linux命令入门&#xff1a; Linux命令的基础格式&#xff1a; 例子&#xff1a; ls 参数 选项 注意&#xff1a; 目录切换命令&#xff1a;cd/pwd cd: pwd: 相对路径和绝对路径&#xff1a; mkdir 不用参数&#xff1a; …

【Node.js工程师养成计划】之打造自己的脚手架工具

一、创建全局的自定义命令 1、打开一个空文件夹&#xff0c;新建一个bin文件夹&#xff0c;在bin文件夹下新建cli.js文件&#xff0c;js文件可以命名为cli.js&#xff08;您随意&#xff09; 2、在cli.js文件中的开头&#xff08;&#xff01;&#xff01;&#xff09;写下面这…

NeRF in the Wild: Neural Radiance Fields for Unconstrained Photo Collections

NeRF in the Wild: Neural Radiance Fields for Unconstrained Photo Collections(野外的 NERF: 用于无约束照片采集的神经辐射场&#xff09; Abstract 我们提出了一种基于学习的方法来合成新的视图的复杂场景使用只有非结构化的收集野生照片。我们建立在神经辐射场(neRF)的…

对于地理空间数据,PostGIS扩展如何在PostgreSQL中存储和查询地理信息?

文章目录 一、PostGIS扩展简介二、PostGIS存储地理空间数据1. 创建空间数据表2. 插入空间数据 三、PostGIS查询地理空间数据1. 查询指定范围内的地理空间数据2. 计算地理空间数据之间的距离3. 对地理空间数据进行缓冲区分析 四、总结 地理空间数据是指描述地球表面物体位置、形…

11、【桥接模式】让将抽象和实现分离,使得它们可以独立地变化

你好&#xff0c;我是程序员雪球。 今天我们来聊聊 23 种设计模式中&#xff0c;一种常见的结构型模式&#xff0c;桥接模式。聊聊它的设计思想、应用场景&#xff0c;以及如何使用。 一、设计思想 桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#…

Python slice切片

1. 切片简介 取一个str、list、tuple的部分元素是非常常见的操作 切片 译自英文单词slice,指的是一部分切片 根据 步长step 从原序列中取出一部分元素组成新序列切片适用于 字符串、列表、元组 2. 切片的格式 字符串[开始索引:结束索引:步长] 包含开始索引, 不包含结束索…

vue+springboot实验个人信息,修改密码,忘记密码功能实现

前端部分 新增Person&#xff08;个人页面&#xff09;&#xff0c;Password&#xff08;修改密码页面&#xff09;&#xff0c;还需要对Manager&#xff0c;login页面进行修改 router文件夹下的index.js&#xff1a; import Vue from vue import VueRouter from vue-router i…

在 vue3 中使用高德地图

前言&#xff1a;定位地图位置所需要的经纬度&#xff0c;可以通过 拾取坐标 获取。 一&#xff1a;快速上手 1. 安装依赖 npm install amap/amap-jsapi-loader # or pnpm add amap/amap-jsapi-loader # or yarn add amap/amap-jsapi-loader 2. 创建组件 src/components/Ma…

飞书小技巧:markdown导出

文章目录 下载Feishu2Md飞书应用配置配置feishu2md工具绑定应用导出markdown 下载Feishu2Md Feishu2Md 飞书应用配置 进入飞书开发者后台 https://open.feishu.cn/app。 点击“创建企业自建应用”&#xff0c;并填写应用名称等信息。而后点击创建。 PS: 此处作者创建应用名…

C++ | Leetcode C++题解之第42题接雨水

题目&#xff1a; 题解&#xff1a; class Solution { public:int trap(vector<int>& height) {int n height.size();if (n 0) {return 0;}vector<int> leftMax(n);leftMax[0] height[0];for (int i 1; i < n; i) {leftMax[i] max(leftMax[i - 1], he…

【Linux系统编程】

Linux系统编程 一.文件编程1.常用API1.1 打开&#xff1a;open1.2 读写&#xff1a;write/read1.3 光标定位: lseek1.4 创建&#xff1a;creat1.4 关闭&#xff1a;close 2.文件的打开及创建3.文件的写入4.文件的读取5.文件描述符5.代码实现cp指令6.编程实现修改文件配置7.写一…

实现Node.js安装与配置。

一 、Node.js简介 Node.js是一个基于Chrome V8引擎的JavaScript运行时环境&#xff0c;用于构建高性能、可扩展的网络应用程序。它发布于2009年5月&#xff0c;由Ryan Dahl开发&#xff0c;允许使用JavaScript进行服务器端编程&#xff0c;使开发者能够在前后端都使用同一种编程…

Unity 新版输入系统(Input System)

前言 官方教程 注意 新的输入系统需要 Unity 2019.4 和 .NET 4 运行时。它不适用于 .NET 3.5 的项目。 教程版本&#xff1a;Unity 2021.3.26 1. 安装 1.1 打开 Package Manager 导航栏 -> Window -> Package Manager 1.2 安装 Input System 选择 Unity Registry 在列…

RabbitMQ, DelayQueue, Redis的介绍以及IDEA的实现

RabbitMQ RabbitMQ是一个开源的消息队列中间件&#xff0c;它实现了高效、可靠的消息传递机制。它支持多种消息传递模式&#xff0c;如发布/订阅、点对点、请求/回应等。RabbitMQ以其可靠性、灵活性和易用性受到广泛的关注和应用。 RabbitMQ基于AMQP&#xff08;Advanced Mess…

孙中亮:北斗三十周年,看北斗芯片高质量发展历程和方向

1994年1月10日&#xff0c;北斗一号建设正式启动&#xff0c;党中央决策建设独立自主的北斗卫星导航系统。2020年7月31日&#xff0c;北斗三号全球卫星导航系统正式开通&#xff0c;标志着北斗系统进入全球化发展新阶段。随着2024年的到来&#xff0c;北斗系统建设已走过栉风沐…

汇智知了堂走进宜宾学院,共话国产化信创未来!

在春意盎然的四月&#xff0c;汇智知了堂以其深厚的品牌底蕴和卓越的教育品质&#xff0c;再次展现了其在教育领域的领先地位。4月18日&#xff0c;汇智知了堂走进宜宾学院&#xff0c;为广大学子带来了一场关于国产化信创时代的技术变革与专业学习建议的讲座。 汇智知了堂作…

2024深圳杯(东三省)数学建模挑战赛D题:音板的振动模态分析与参数识别思路代码成品论文分析

​ 更新完整代码和成品完整论文 《2024深圳杯&东三省数学建模思路代码成品论文》↓↓↓ https://www.yuque.com/u42168770/qv6z0d/zx70edxvbv7rheu7?singleDoc# 问题重述 深圳杯&#xff08;东三省&#xff09;数学建模挑战赛2024D题&#xff1a;音板的振动模态分析与…

YoloV9改进策略:注意力改进、Neck层改进_自研全新的Mamba注意力_即插即用,简单易懂_附结构图_检测、分割、关键点均适用(独家原创,全世界首发)

摘要 无Mamba不狂欢,本文打造基于Mamba的注意力机制。全世界首发基于Mamba的注意力啊!对Mamba感兴趣的朋友一定不要错过啊! 基于Mamba的高效注意力代码和结构图 import torch import torch.nn as nn # 导入自定义的Mamba模块 from mamba_ssm import Mamba class Eff…

vue做导入导出excel文档

系统中经常会遇到要实现批量导入/导出数据的功能&#xff0c;导入就需要先下载一个模板&#xff0c;然后在模板文件中填写内容&#xff0c;最后导入模板&#xff0c;导出就可能是下载一个excel文件。 1、导出 新建一个export.js文件如下&#xff1a; import {MessageBox,Mes…