当前位置: 首页 > news >正文

DQL数据查询语言(多表处理)—/—<7>

一、多表处理

当前有两个表,一个是学生表student,一个是分数表score

student表字段名表示如下(共1000条数据):

score表字段表示如下(共6000条数据):

1、求每个学生的总分

SELECT id,SUM(score)
FROM score
GROUP BY id

2、将上述的总分与student表合并

 a表 join b表 on 条件

使用join on 函数来合并两个表,join前后各一个表表示合并,默认为内连接,on后面写两个表的关联条件

实例代码如下:

SELECT * FROM
(SELECT id,SUM(score) FROM score GROUP BY id) t1
JOIN student t2
ON t1.id=t2.id

代码解析:

        将上述1中生成的总分分数的表用括号括起来并命名为t1,然后再使用join函数将它与student表合并,student表取别名为t2,条件是t1表中的id等于t2表中的id,然后再使用select * from将这一整个表生成出来,此处*号可以更改,使用t1.id输出t1表中的id字段内容,也可使用t1.*来输出t1表总的所有数据,同样也可更改t2来取你想要数据

3、解析join

例如有两个表如下,第一个是person表,第二个是height表

    

1)内连接inner:

此时单单使用join取合并这两个表,其得到的结果如图所示

           

可以发现,数id=3与id=4的人没有合并出来,此时默认为inner join,可以不写inner

2)左连接left join、右连接right join

左连接:即保留join左边的所有数据,join前面的表就是左表,后面的表就是右表

   

右连接:即保留join右边的所有数据

    

3)全连接union
去重合并 union

例如下列代码,使用union合并两个表,一个是学生表的前十条数据,另一个是学生表的第五条开始的后十条数据,其合并结果会有去重的作用,即除去合并时出现的完全相同的行

其结果为:

不去重合并 union all

如果想要不去重可以使用union all ,不去重的合并所有数据

其运行结果为:此时重复数据没有被去除

此时如果想合并前面的两个person表和height表,可以直接把左合并与右合并分别用括号括起来,分别当做一个表,然后再使用union将两个表的数据完全合并,即可得到下列全连接形式

 4、隐式内连接(古董写法)

SELECT *
FROM student t1,score t2
WHERE t1.id=t2.id

其结果同样和join内连接合并的一样

5、求每个班的平均分

直接给出全部代码:

SELECT clazz,AVG(tt1.sum_sco)
FROM(SELECT t2.*,t1.sum_scoFROM(SELECT id,SUM(score) sum_sco FROM score GROUP BY id) t1RIGHT JOIN student t2ON t1.id=t2.id) tt1
GROUP BY clazz

接下来跟着思路走:
1、分析表

        两张表,学生表和分数表,分数表里有学生id、科目id和分数,学生表里有学生id、学生姓名、年龄、性别以及班级

student:

score:

2、分析思路

        要求班级平均成绩首先要把班级总分求出来,要求班级总分首先要有每个学生的总成绩

如此思路即可:

1)求学生总分:

对每个学生进行分组,对每个科目的分数求和,得到以下结果

SELECT id,SUM(score) sum_sco --取别名
FROM score 
GROUP BY id

2)合并表

        求出总分后将总分合并到学生表,得到下列代码:

SELECT t2.* -- 打印结果只需要t2表的所有字段,t1表的学生总分,t1.sum_sco
FROM(SELECT  -- 学生总分id,SUM(score) sum_sco FROM score GROUP BY id) t1  -- 将学生总分表取别名为t1RIGHT JOIN student t2  --合并student 表,并取别名t2ON t1.id=t2.id  --t1表的学生id等于t2表的学生id

3)求平均分

        得到了带学生总分的学生表,即可将班级分组,对每个学生的总分求平均值

SELECT clazz  -- 以单个班级分组,分别求每个班的平均分,AVG(tt1.sum_sco) -- 对班级内学生总分求平均值
FROM(SELECT   -- 将合并后带有学生总分表当做一个表,取别名tt1t2.*,t1.sum_scoFROM(SELECT id,SUM(score) sum_sco FROM score GROUP BY id) t1RIGHT JOIN student t2ON t1.id=t2.id) tt1 
GROUP BY clazz


 

6、总结

 1) 单表主要操作

        where 条件/ group by分组 / having条件 / select输出 / order by排序 / limit限制条数 

 2)多表主要操作

        join / union 合并

3)执行顺序

        执行顺序首先括号内最高,其次是join,然后是where> group by> having > select > order by > limit 

相关文章:

DQL数据查询语言(多表处理)—/—<7>

一、多表处理 当前有两个表,一个是学生表student,一个是分数表score student表字段名表示如下(共1000条数据): score表字段表示如下(共6000条数据): 1、求每个学生的总分 SELECT …...

力扣刷题总结

去年有段时间一直在刷题,进步神速,解决了以往刷完就忘的问题,这里总结下经验,给有需要的人参考下,核心观点就仨: 1. 打好数据结构与算法基础 2. 多刷题多练习 3. 形成自己的知识体系 下图是我梳理的知识体…...

BLDC ESC 无刷直流电子调速器驱动方式

BLDC ESC 无刷直流电子调速器驱动方式 1. 源由2. 驱动方法2.1 Trapezoidal 1202.2 Trapezoidal 1502.3 Sinusoidal 1802.4 Field-Orientated Control (FOC) 3. FOC(Field-Oriented Control)3.1 引入坐标系3.2 Clarke and Park变换Clarke 变换&#xff08…...

解决 IntelliJ IDEA 编译错误 “Groovyc: Internal groovyc error: code 1” 及 JVM 内存配置问题

在使用 IntelliJ IDEA 进行开发时,我们可能会遇到各种编译和运行错误,其中之一就是 Groovy 编译器错误(Groovyc: Internal groovyc error: code 1)或 JVM 内存不足错误。这类错误可能会影响开发效率,但通过调整 JVM 内…...

LeetCode.2940.找到Alice和Bob可以相遇的建筑

友情提示:这个方法并没有通过案例,只通过了944个案例(很难受),超时了,但是想着还是分享出来吧 题目描述: 给你一个下标从 0 开始的正整数数组 heights ,其中 heights[i] 表示第 i …...

OFD板式文件创建JAVA工具-EASYOFD 四、文字 Text

JAVA版本的OFD板式文件创建工具easyofd. 功能包含了图像、 图像、 文字、和模版页功能。同时也支持OFD文件的数字签名及验签,电子签章及验签。 本JAVA版本的easyofd使用原生方式创建板式文件,不依赖JAVA的SWT库。 项目地址:http://…...

【概念速通】李群 lie group

李群 lie group 概念速通 快速示例介绍:【引入】单位复数 (The unit complex numbers) 是李群 (lie group) 最简单的例子之一【进一步】SO(2): The 2D rotation matrices【Typical uses】SE(2): Pose of a robot in the plane Group & Lie Group 定义&#xff1…...

day_39

198. 打家劫舍 class Solution:def rob(self, nums: List[int]) -> int:if len(nums) 1:return nums[0]dp [0] * len(nums)dp[0], dp[1] nums[0], max(nums[0], nums[1])for i in range(2, len(nums)):dp[i] max(dp[i - 1], dp[i - 2] nums[i])return dp[len(nums) - …...

计算机系统层次结构

1.计算机系统的组成 计算机系统的组成硬件系统软件系统 2.计算机的硬件部分 2.1冯诺依曼机的结构特点: 图示: 1.五大部分由运算器(ALU),控制器(CU),存储器(主存辅存),输入设备,输出设备五大部分组成2.指…...

java语言特点

Java语言是一种广泛使用的编程语言,它具有以下几个显著的特点: 面向对象:Java是一种纯面向对象的语言,它支持类的封装、继承和多态等特性。面向对象的设计使得Java程序更加模块化,易于维护和扩展。 平台无关性&#xf…...

单元测试注解:@ContextConfiguration

ContextConfiguration注解 ContextConfiguration注解主要用于在‌Spring框架中加载和配置Spring上下文,特别是在测试场景中。 它允许开发者指定要加载的配置文件或配置类的位置,以便在运行时或测试时能够正确地构建和初始化Spring上下文。 基本用途和工…...

大数据-72 Kafka 高级特性 稳定性-事务 (概念多枯燥) 定义、概览、组、协调器、流程、中止、失败

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…...

MySQl 中对数据表的增删改查(基础)

MySQl 中对数据表的增删改查(基础) 新增演示插入一条数据插入多条数据 查询全列查询部分列查询查询关于列名的表达式查询时用别名查询去重后的结果查询排序后的结果条件查询比较运算符和逻辑运算符 分页查询 修改删除 黑白图是在命令行里的,彩…...

LVS知识点整理及实践

LVS知识点整理及实践 LVSlvs集群概念lvs概念lvs集群类型lvs-nat模型数据逻辑: lvs-DR模式数据传输和过程:特点: lvs-tun模式数据传输过程:特点: lvs-fullnet模式数据传输过程 lvs调度算法lvs调度算法类型lvs静态调度算法lvs动态调度算法4.15版本内核以后新增调度算法 ipvsadm命…...

Ubuntu gnome WhiteSur-gtk-theme类mac主题正确安装和卸载方式

目录 摘要目的安装和卸载特别说明 Ubuntu gnome WhiteSur-gtk-theme类mac主题正确安装和卸载方式 摘要 Ubuntu版本:ubuntu24.04 主题下载地址:https://github.com/vinceliuice/WhiteSur-gtk-theme 参考的安装教程:https://blog.51cto.com/u_…...

计算机毕业设计选题推荐-办公用品管理系统-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

计算机毕业设计选题推荐-网上考试系统-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

白骑士的Matlab教学基础篇 1.4 函数与脚本

系列目录 上一篇:白骑士的Matlab教学基础篇 1.3 控制流 函数和脚本是 MATLAB 编程中的基本组成部分,它们使得代码更加模块化、可重用和组织化。通过理解函数的定义与调用、参数与返回值,以及 MATLAB 脚本与批处理,可以显著提高编…...

Qt——多线程

一、QThread类 如果要设计多线程程序,一般是从QThread继承定义一个线程类,并重新定义QThread的虚函数 run() ,在函数 run() 里处理线程的事件循环。 应用程序的线程称为主线程,创建的其他线程称为工作线程。主线程的 start() 函数…...

技术周总结 08.05-08.11周日(scala git回滚)

文章目录 一、08.06 周二1.1) 问题01 mac安装 scala:1. 使用 Homebrew2. 使用 SDKMAN!其他注意事项1. 确认 Scala 安装位置2. 设置 PATH 环境变量对于 zsh (macOS Catalina 及更高版本默认使用 zsh):对于 bash (如果您使用的是 bash shell): 3. 验证安装 二、08.09 周五2.1&…...

告别重复造轮子:用快马AI一键生成SpringBoot通用后台管理模块

最近在做一个后台管理系统的项目,发现每次从零开始搭建SpringBoot框架都要重复写很多样板代码,特别浪费时间。后来尝试用InsCode(快马)平台的AI生成功能,效率提升了好几倍。今天就来分享下如何快速生成SpringBoot通用后台模块。 1. 后台管理…...

3步搞定YOLO人脸检测:从零到生产级应用的完整实践指南

3步搞定YOLO人脸检测:从零到生产级应用的完整实践指南 【免费下载链接】yolo-face YOLO Face 🚀 in PyTorch 项目地址: https://gitcode.com/gh_mirrors/yo/yolo-face YOLO人脸检测技术正在改变计算机视觉应用的开发方式,无论你是想构…...

2KW移相全桥整机Matlab Simulink仿真模型电源 2KW移相全桥整机Matlab Simulink仿真模型电源学习资料,报告mathcad参数设计,

2KW移相全桥整机Matlab Simulink仿真模型电源 2KW移相全桥整机Matlab Simulink仿真模型电源学习资料,报告mathcad参数设计,模型搭建过程参考资料,仿真模型等,很全面的移相全桥学习资料,电子资料针对你提到的 2kW 移相全…...

5大核心功能深度解析:Umi-OCR开源离线文字识别工具的技术实现与应用指南

5大核心功能深度解析:Umi-OCR开源离线文字识别工具的技术实现与应用指南 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二…...

FPGA程序部署双通道:JTAG在线调试与SPI Flash固化的工程实践

1. JTAG在线调试:工程师的"手术刀" 第一次用JTAG调试FPGA时,我盯着开发板看了半天——这玩意儿连上电脑就能直接改逻辑?后来才发现它就像给病人做手术时的实时监护仪,能随时观察"患者"状态,但断电…...

Qwen3-Embedding-4B应用分享:打造智能法律合同检索系统,快速找到关键条款

Qwen3-Embedding-4B应用分享:打造智能法律合同检索系统,快速找到关键条款 1. 引言:法律合同检索的痛点与解决方案 在法律实务工作中,合同审查是一项耗时且关键的任务。律师和法务人员经常需要从数百页的合同中快速定位特定条款&…...

如何一键下载国内主流视频平台的在线视频:Video-Downloader完全指南

如何一键下载国内主流视频平台的在线视频:Video-Downloader完全指南 【免费下载链接】Video-Downloader 下载youku,letv,sohu,tudou,bilibili,acfun,iqiyi等网站分段视频文件,提供mac&win独立App。 项目地址: https://gitcode.com/gh_mirrors/vi/V…...

MetaTube插件:智能元数据整合引擎的技术架构深度解析

MetaTube插件:智能元数据整合引擎的技术架构深度解析 【免费下载链接】jellyfin-plugin-metatube MetaTube Plugin for Jellyfin/Emby 项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-metatube 在Jellyfin/Emby媒体服务器生态系统中&#xff…...

Qwen3-ASR-1.7B效果展示:实测多语言语音识别,准确率超高

Qwen3-ASR-1.7B效果展示:实测多语言语音识别,准确率超高 1. 开篇:一款让人惊艳的语音识别模型 最近测试了Qwen3-ASR-1.7B这款语音识别模型,结果让我大吃一惊。作为一款中等规模的模型,它在多语言识别上的表现完全不输…...

别再只改默认密码了!Nacos 1.x/2.x 生产环境安全加固保姆级清单(附漏洞自查脚本)

Nacos生产环境安全加固全指南:从基础配置到漏洞防御 在微服务架构盛行的今天,Nacos作为服务发现和配置管理的核心组件,其安全性直接影响整个系统的稳定性。许多团队在部署Nacos时往往只满足于修改默认密码,却忽视了完整的安全防护…...