连接(基础版)

news2024/11/26 20:49:16

QUESTION ONE
在这里插入图片描述

# Write your MySQL query statement below
select unique_id,name 
from EmployeeUNI right join Employees 
on EmployeeUNI.id = Employees.id 

这题很显然有两张表需要进行连接,在我们确定完要取的字段后,就需要连接两张表,看题目要求可知,当EmployeeUNI 中不存在Employees 的数据时,是以Employees 为准,补null,因为我们需要知道Employees 为主表,因此是 副表 right join 主表(主表 left join 副表),最后连接条件通过on实现。


QUESTON TWO
在这里插入图片描述

# Write your MySQL query statement below
select product_name,year,price 
from Sales left join Product 
on Sales.product_id = Product.product_id 

这题还是两张表的连接,值得注意的是示例中并没有出现id = 300的product,因此我们知道Sales为主表(否则会出现Samsung null null的数据),因此 主表 left join 副表实现联立条件。


QUESTION THREE
在这里插入图片描述

# Write your MySQL query statement below
select customer_id,count(customer_id) as count_no_trans 
from Visits v left join Transactions t 
on v.visit_id = t.visit_id 
where transaction_id is null
group by customer_id 

本题逻辑性有所提升,我们要去找Visits 表中出现的customer_id ,但在Transactions 表中没有出现的customer_id ,同时还需要通过visit_id 出现的次数对两张表进行对比,看上去逻辑十分复杂,但我们换个思路来考虑,如果把Visits 表作为主表将两张表进行拼接会怎样?
通过visit_id 进行拼接,transaction_id 如果没有值就会显示null,因为transaction_id 所在的是副表,这时通过customer_id 进行分组,就可以看到哪些customer_id 对应的transaction_id 是为null的了,然后对customer_id出现的次数进行统计,就是题解。

中间构造的过程表如下:
在这里插入图片描述


QUESTION FOUR
在这里插入图片描述

select w2.Id
from Weather as w1, Weather as w2
where TIMESTAMPDIFF(DAY, w1.RecordDate, w2.RecordDate) = 1 
AND w1.Temperature < w2.Temperature

本题有两个考点,一个是一张表需要分为两个表,有经验的同学知道只需要将Weather 分别取两个别名区分即可,还有一个考点在于如何确定两天的关系是相邻的,这里我推荐使用TIMESTAMPDIFF,因为它的第一个参数可以为年、月、日,值得注意的是差值是第三个参数减去第二个参数,最后用使用where 筛选下。


QUESTION FIVE
在这里插入图片描述

# Write your MySQL query statement below
select a.machine_id,
round(sum(b.timestamp - a.timestamp) / count(*),3) as processing_time
from Activity a,Activity b
where a.machine_id = b.machine_id and a.process_id = b.process_id and a.activity_type = 'start' and b.activity_type = 'end'
group by a.machine_id

本题仍然只有一张表,因此仍然需要一表分两表,可以由题意得出a、b两表的machine_id 、process_id 是一样的,只不过a表取的是start,b表取的是end。这样就实现了一张含有machine_id 、process_id 、timestamp (start)、timestamp (end)的表,这样直接进行减法后求和即可,round实现小数的保留。


QUESTION SIX
在这里插入图片描述

# Write your MySQL query statement below
select name,bonus
from Employee e left join Bonus b
on e.empId = b.empId
where bonus < 1000 or bonus is null

简单的连接,注意点还是bonus可以出现为null的情况,所以Employee 作为主表进行连接,筛选条件bonus除了小于1000的情况,还要判断为null的情况。


QUESTION SEVEN
在这里插入图片描述

# Write your MySQL query statement below
select s.student_id,s.student_name,b.subject_name,count(e.subject_name) as attended_exams 
from Students s cross join Subjects b
left join Examinations e
on s.student_id = e.student_id and b.subject_name = e.subject_name 
group by s.student_id,b.subject_name 
order by s.student_id,b.subject_name 

本题涉及到多表的连接,主要的难点在于attended_exams 如何得到,首先我们可以观察到result结果表将student_id 和subject_name 进行了一对一的逻辑对应,这就启发我们需要进行笛卡尔积将student_id 和subject_name 进行配对。然后我们注意到result表中,如果student_id 对应的subject_name 是不存在的,是为0的,可以想到使用count函数进行统计,而count不会对null进行统计,因此得出笛卡尔积后的表为主表,主表 left join Examinations 实现所有人员对应课程的配对情况,然后通过student_id 、subject_name 进行三表联立,分组排序得出结果。

QUESTION EIGHT
在这里插入图片描述

# Write your MySQL query statement below
select a.name 
from Employee a left join Employee b
on a.id = b.managerId 
group by a.name
having count(b.managerId) >= 5

本题在前面的练习后变得较为简单,同样是将一表分为两表,连接条件就是上司的id = 下属的managerId ,在连接两表之后,通过name进行分组,值得注意的是分组完毕后只能使用having进行条件筛选,而不是group by。

QUESTION NINE
在这里插入图片描述

# Write your MySQL query statement below
select s.user_id,
round(sum(if(action='confirmed',1,0)) / count(s.user_id),2) as confirmation_rate 
from Signups s left join Confirmations c
on s.user_id = c.user_id
group by s.user_id

本题除了需要将两表进行连接外,还需要对confirmation_rate 的获取进行设计,confirmation_rate 是通过某个user_id得到它对应的action等于confirmed的数量除以user_id所有的数据量,有了这个方向,我们先考虑连接两表,result表我们看到user_id=6的情况是存在的,因此Signups 为主表,连接条件便是两者的user_id ,接下来需要考虑confirmation_rate ,round实现四舍五入的两位小数结果,sum对action等于confirmed的情况进行累加,if对action进行判断,最后的除数自然是Signups 表中user_id的数量,因为Confirmations 中的user_id是不全的。

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

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

相关文章

鸿蒙Hi3861学习十二-Huawei LiteOS-M(osXX与LOS_XX)

一、LOS_XX是什么 LOS_XX是LiteOS_M或LiteOS_A内核提供的接口。例如&#xff1a;LOS_TaskCreate、LOS_TaskCreate、LOS_SemCreate等。因为LiteOS_M和LiteOS_A是针对不同的内核&#xff0c;所以LOS_XX在实现上也是有所不同的。也就是说LOS_XX跟具体的内核类型是有关系的。 这里只…

伸展树详解

伸展树的概念 伸展树&#xff08;Splay Tree&#xff09;是仅依靠局部性原理和局部平衡分析&#xff0c;从而实现高效的自适应平衡树结构。是一种二叉查找树&#xff0c;其核心思想是将最近访问的节点旋转到根节点。每次进行访问、插入、删除等操作时&#xff0c;都会选择与之…

【云计算】Hadoop集群安装

文章目录 前言一、环境二、安装虚拟机及配置配置网络 三、安装Ubuntu及配置下载ISO镜像VMware安装UbuntuUbuntu配置&#xff1a;配置结果IP免密登录 JAVA安装hadoop安装&#xff1a;文件的作用core-site.xml&#xff1a;core-site.xmlyarn-site.xmlmapred-site.xml 修改配置&am…

【Linux网络】网络层IP和数据链路层

文章目录 1、网络层IP1.1 认识网络层1.2 IP报文格式和IP报文切片1.3 网段划分以及路由 2、数据链路层2.1 以太网帧格式2.2 ARP协议 3、其它重要协议或技术3.1 DNS技术3.2 ICMP协议3.3 NAT技术3.4 NAT和代理服务器 1、网络层IP 1.1 认识网络层 浅谈一下各层 应用层&#xff1a;…

JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)复现

文章目录 一.前言二.影响版本三.环境搭建四.漏洞复现1.编写反弹shell的命令2.序列化数据生成3.发送POC 一.前言 该漏洞为 Java反序列化错误类型&#xff0c;存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试…

基于AT89C51单片机的温度计设计

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/87773445 源码获取 主要内容&#xff1a; 设计一个简易温度计&#xff1b;要求电路实现如下功能&#xff1a; 设计通过单片机和数码管、led灯等组成&#xff0c;可…

巧用千寻位置GNSS软件| 一文学会曲线样

曲线放样是圆曲线形放样工具&#xff0c;在线路初堪、临时设计、临时放样采集坐标等作业过程中&#xff0c;曲线放样更加简单和方便。千寻位置GNSS软件提供了三种线型文件编辑放&#xff0c;分别是直线、圆曲线 和缓曲线。圆曲线说明:线型上任意一点的曲率、半径都相同;缓曲线说…

【剧前爆米花--爪哇岛寻宝】网络编程一些概念以及Java实现网络编程流程

作者&#xff1a;困了电视剧 专栏&#xff1a;《JavaEE初阶》 文章分布&#xff1a;这是一篇关于网络初识的文章&#xff0c;在这篇文章中剖析了网络编程的一些概念以及用Java实现网络编程的一些流程&#xff0c;希望对你有所帮助&#xff01; 目录 网络编程 含义和一些概念 …

sysMaster: 全新1号进程实现方案,秒级自愈,保障系统全天在线

认识 1 号进程和 sysMaster 在 Linux 操作系统中&#xff0c;1 号进程是 init 进程&#xff0c;它是所有其他进程的祖先进程。init 进程是系统启动时第一个被创建的进程&#xff0c;它负责启动和管理其他所有进程&#xff0c;并在系统关机时关闭它们。在现代 Linux 系统中&…

数组--part 4--长度最小的子数组(力扣299/904/76)

文章目录 算法基本思想leetcode 209 长度最小的子数组leetcode 904 水果成篮leetcode 76 最小覆盖子串 算法基本思想 首先对于滑动窗口&#xff0c;题目可以先去看看leetcode 209 进行相关的了解后&#xff0c;再来书写代码。 首先我们的第一想法肯定就是暴力解法&#xff1a…

html实现汉诺塔小游戏

文章目录 1.设计来源汉诺塔由来1.1 主界面1.2 游戏规则1.3 游戏完成界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/130606736 html实现汉诺塔小游戏源码 汉诺塔&…

数据结构-链表(详解)

前言&#xff1a;内容包括&#xff1a;链表的分类&#xff0c;无头单向非循环链表的增删查改的实现&#xff0c;带头双向循环链表的增删查改的实现 目录 链表的分类 1. 单向或者双向 ​编辑 2. 带头或者不带头 3. 循环或者非循环 无头单向非循环链表&#xff1a; ​编辑…

造梦日记 Printidea 用户手册

*Hi 造梦日记* 欢迎来到造梦日记的空间&#xff5e; 造梦日记Printidea是一款基于AI算法、输入文字或图片即可生成高质量图片的工具&#xff0c;由西湖大学深度学习实验室和西湖心辰联合出品&#xff0c;超强算力&#xff0c;0.8秒出图&#xff0c;目前支持微信小程序、网页端…

边缘计算盒子的特点?边缘计算盒子适用于什么场景

边缘计算盒子&#xff08;Edge Computing Box&#xff09;是一种用于边缘计算的硬件设备&#xff0c;它通常是一个小型的计算设备&#xff0c;具备一定的计算能力和存储资源&#xff0c;并且能够连接到网络。边缘计算盒子的主要目的是在物联网&#xff08;IoT&#xff09;和分布…

续ShaderEditor、Inspector之后又一成功爆品,2周260+单!

01 前言 大家好&#xff0c;我是98K&#xff01;五一前&#xff0c;我上架 Cocos Store 的『高性能割草框架』增加 Cocos Creator 2.4.x 引擎&#xff0c;已经支持的老铁可免费更新&#xff01; 后续的更新计划是&#xff1a;完善2D游戏案例、增加3D案例、支持RVO和群聚&#…

Android WebView 长按弹出的文本选择器如何监听滑动和如何弹出完全自定义的菜单栏

在这次改版中&#xff0c;h5小伙伴与我沟通说要把长按选择改用成原生的拉选框&#xff0c;之前我也没搞过呀&#xff0c;开始研究吧。 怎么研究呀&#xff0c;当然是百度一下了。 百度了一天总结如下&#xff1a; 好多文章都是告诉你如何在系统的基础上来修改自己的文字和点…

vue2 框架运行原理剖析系列(二)之 组件挂载$mount神秘之旅!!!

一、vue组件挂载 1.1 上一篇文章中&#xff0c;介绍到组件执行 mountComponent 函数&#xff0c;本文对此展开详细的讲解。 1.2 调用改方法的位置在于entry-runtime-with-compiler.js 的Vue.prototype.$mount&#xff0c;具体代码如下&#xff1a; 其中&#xff0c; &#xff…

【图像融合】Dif-Fusion:基于扩散模型的红外/可见图像融合方法

文章目录 摘要一、前言二、相关工作1.红外线和可见光的图像融合2.扩散模型&#xff08;可见博主之前的博客&#xff09; 三、方法1.红外线和可见光图像的联合扩散2*.多通道扩散特征的融合 四、实验1.实验设置2.融合性能分析&#xff08;效果展示&#xff09;3.泛化实验 总结 摘…

通知短信 API 技术细节以及发送流程机制原理解析

引言 短信是一种简单、直接、高效的通信方式&#xff0c;被广泛应用于各个领域。在移动互联网时代&#xff0c;短信成为了客户服务、政府通知、公共服务等方面的重要工具。为了更好地利用短信这种通信方式&#xff0c;通知短信 API应运而生。短信API可以帮助企业、政府和应用程…

RK3588旗舰32T人工智能多网口边缘智能网关交换机

32T边缘智能网关发布&#xff0c;助力多行业数字化升级&#xff0c;运维降本增效&#xff0c;搭载RK3588旗舰芯 搭载瑞芯微RK3588芯片的边缘智能网关XM-RK3588&#xff0c;算力可扩展至32T&#xff0c;适用于电力能源、智慧交通、智慧城市、智慧安防、智慧医疗、工业互联网等领…