【MYSQL】聚合查询、分组查询、联合查询

目录

  • 聚合查询
    • 聚合函数
      • count()
      • sum()
      • avg()
      • max()和min()
      • 总结
  • 分组查询
    • group by 子句
    • having 子句
  • 联合查询
    • 笛卡尔积
    • 内连接
    • 外连接
    • 自连接
    • 子查询
      • 单行子查询
      • 多行子查询
      • from子句使用子查询
  • 合并查询

聚合查询

聚合查询就是针对表中行与行之间的查询。

聚合函数

count()

count(列名):查询当前列下面有多少条数据。

select count(*) from 表名;#查询当前表有多少行
select count(列名) from 表名;#查询该列有多少行
  • count(1),里面加个数字常量也可以达到count(*)的效果,推荐写count(*)。
  • 使用count(列名)查询到null时不算入行数。

sum()

把查询到的结果相加。

select sum(列名) from 表名;#将该列所有值相加
  • 必须是数字,不是数字会报警告没结果。
  • 使用该函数会将null不计算,不会出现加上null和为null的结果。

avg()

求查询到结果的平均值。

select avg(列名/表达式) from 表名;#将该列所有值的平均数
  • 必须是数字,不是数字会报警告没结果。
  • 使用该函数会将null那行不计算,比如1,2,null平均值为(1 + 2)/ 2 = 1.5000。

max()和min()

分别返回查到的最大值和最小值。

select max(列名) from 表名;#返回该列最大值
select min(列名) from 表名;#返回该列最小值
  • 必须是数字,不是数字会报警告没结果。
  • null不参与。

总结

函数说明
count (列名)返回查询到的数据的 数量
sum(列名)返回查询到的数据的 总和,不是数字没有意义
avg(列名)返回查询到的数据的 平均值,不是数字没有意义
max(列名)返回查询到的数据的 最大值,不是数字没有意义
min(列名)返回查询到的数据的 最小值,不是数字没有意义

分组查询

group by 子句

查询(select) 中使用 group by子句可以对指定列进行分组查询。
功能就是将查询到的结果中 group by 子句后的列完全相同的合并在一起。

select 列名.... from 表名 group by 列名1, 列名2;


group by 子句后也可以跟 order by子句排序。

having 子句

group by 子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用 where语句,而需要用having。
因为分组结果在结果集中是临时表,不是真是的数据,where处理的事是真实数据。

select 列名.... from 表名 group by 列名1, 列名2 having 条件;

联合查询

联合查询就是将多张表联合起来查询,将需要的信息一起取出来。

笛卡尔积

笛卡尔积就是将表中每行与其他表的行进行全排列。

select .... from1,2;

例如:

  • 当使用笛卡尔积的表含有主外键查询时,因为是全排列,必然会产生无效数据,我们就可以使用条件查询,但是必须要使用 表名.列名。

  • 通过指定列查询精简结果集时也需要使用 表名.列名。

  • 可以通过给表名起别名来精简SQL语句。

内连接

两种写法:

select 列名 from1 as 别名1,表2 as 别名2 where 条件 and 其他条件;

select 列名 from1 as 别名1 join2 as 别名 on 条件 and 其他条件; 

外连接

外连接分为左外连接和右外连接。
如果联合查询,join 左侧的表完全显示我们就说是左外连接;
join右侧的表完全显示我们就说是右外连接。

select 列名 from1 as 别名1 right join2 as 别名2 on 条件;#右外连接,表2全显示

select 列名 from1 as 别名1 left join2 as 别名2 on 条件;#左外连接,表1全显示

自连接

自连接是指在同一张表连接自身进行查询。
但是必须要对表进行起不同的别名。

select 列名 from 表名 as 别名1,表名 as 别名2 where 条件 and 其它条件;

select 列名 from 表名 as 别名1 join 表名 as 别名2 on 条件 and 其它条件;

子查询

子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。

select 列名 from 表名 where= (select语句 );#例子

单行子查询

作为条件的子查询语句返回值只有一行数据。

多行子查询

作为条件的子查询语句返回值有多行行数据。

  • 可以使用in来处理:
  • 可以使用多列包含:
    将where条件括号中与返回值一一进行比较
  • 使用[not] exists关键字
select 列名 from 表名 where exists (select语句);

后面查询语句返回结果集为空就不执行前面的查询语句,反之不为空执行。

from子句使用子查询

在from子句中使用子查询:子查询语句出现在from子句中。
把一个子查询当做一个临时表使用。

合并查询

为了合并多个select的执行结果,可以使用集合操作符 union,union all。
使用union 和union all时,前后查询的结果集中,字段需要一致。

  • union操作符用于取得两个结果集的并集。当使用该操作符时,
    会自动去掉结果集中的重复行。
  • union all 操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络笔记002

### 课堂讨论对话 **学生A**: 老师,计算机网络的组成是怎样的?🤔 **老师**: 非常好的问题!计算机网络主要由硬件、软件和通信协议三部分组成。我们先从硬件开始讨论吧。 **学生B**: 硬件包括哪些设备呢?&#x1f60…

【案例分享】智慧工地以及档案资料电子化

汇匠源分别在2020年和2023年与中国电建昆明院进行了项目合作,其中包括智慧工地的信息管理平台建设、数据录入、接口研发等;档案资料电子化的施工过程资料整理、归档等工作。 智慧工地 — 项目概况 — 项目名称:某JR项目智慧工地信息管理…

DriveMatriX Highway Dataset :高速公路驾驶数据集(猫脸码客 第196期)

DriveMatriX Highway Dataset 1.0:自动驾驶与ADAS感知验证的里程碑 在当今快速发展的自动驾驶(AV)和高级驾驶辅助系统(ADAS)领域,数据的获取与处理成为了推动技术进步的关键因素。为了在这些复杂且多变的交…

Allegro第二季度GMV增长11.1%,活跃买家突破2000万

9月19日,波兰电商巨头Allegro公布了2024年第二季度财报。第二季度,Allegro的商品交易总额(GMV)同比增长11.1%,调整后EBITDA同比增长31.5%,均好于预期。 财报显示,Allegro各区域活跃买家数量超过…

java日志框架之Log4j

文章目录 一、Log4j简介二、Log4j组件介绍1、Loggers (日志记录器)2、Appenders(输出控制器)3、Layout(日志格式化器) 三、Log4j快速入门四、Log4j自定义配置文件输出日志1、输出到控制台2、输出到文件3、输出到数据库 五、Log4j自…

学习记录:js算法(四十二): 寻找两个正序数组的中位数

文章目录 寻找两个正序数组的中位数我的思路网上思路 总结 寻找两个正序数组的中位数 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 示例 1: 输入:nums1 [1,3], n…

Transformer推理结构简析(Decoder + MHA)

一、Transformer 基本结构 Transformer由encoder和decoder组成,其中: encoder主要负责理解(understanding) The encoder’s role is to generate a rich representation (embedding) of the input sequence, which the decoder c…

【深度学习】(5)--搭建卷积神经网络

文章目录 搭建卷积神经网络一、数据预处理1. 下载数据集2. 创建DataLoader(数据加载器) 二、搭建神经网络三、训练数据四、优化模型 总结 搭建卷积神经网络 一、数据预处理 1. 下载数据集 在PyTorch中,有许多封装了很多与图像相关的模型、…

Java/Spring项目的包开头为什么是com?

Java/Spring项目的包开头为什么是com? 下面是一个使用Maven构建的项目初始结构 src/main/java/ --> Java 源代码com.example/ --->为什么这里是com开头resources/ --> 资源文件 (配置、静态文件等)test/java/ --> 测试代码resourc…

Visual Studio-X64汇编编写

纯64位汇编: includelib ucrt.lib includelib legacy_stdio_definitions.lib includelib user32.libextern printf:proc extern MessageBoxA:proc.data szFormat db "%s",0 szHello db "HelloWorld",0 szRk db "123",0.code start p…

无线安全(WiFi)

免责声明:本文仅做分享!!! 目录 WEP简介 WPA简介 安全类型 密钥交换 PMK PTK 4次握手 WPA攻击原理 网卡选购 攻击姿态 1-暴力破解 脚本工具 字典 2-Airgeddon 破解 3-KRACK漏洞 4-Rough AP 攻击 5-wifi钓鱼 6-wifite 其他 WEP简介 WEP是WiredEquivalentPri…

百度智能云API调用

植物识别API import base64 import urllib import requestsAPI_KEY "你的图像识别API_KEY" SECRET_KEY "你的图像识别SECRET_KEY"def main():url "https://aip.baidubce.com/rest/2.0/image-classify/v1/plant?access_token" get_access_t…

24/9/19 算法笔记 kaggle BankChurn数据分类

题目是要预测银行里什么样的客户会流失,流失的概率是多少 我这边先展示一下我写的二分类的算法 import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.linear_model impo…

60.【C语言】内存函数(memset,memcmp函数)

3.memset函数(常用) *简单使用 memset:memory set cplusplus的介绍 点我跳转 翻译: 函数 memset void * memset ( void * ptr, int value, size_t num ); 填充内存块 将ptr指向的内存块的前num个字节设置为指定值(解释为无符号char)。 (指针ptr类型为…

qt-C++笔记之作用等同的宏和关键字

qt-C笔记之作用等同的宏和关键字 code review! Q_SLOT 和 slots: Q_SLOT是slots的替代宏,用于声明槽函数。 Q_SIGNAL 和 signals: Q_SIGNAL类似于signals,用于声明信号。 Q_EMIT 和 emit: Q_EMIT 是 Qt 中用于发射…

【Linux】Linux的基本指令(1)

A clown is always a clown.💓💓💓 目录 ✨说在前面 🍋知识点一:Linux的背景 •🌰1.Unix发展的历史 •🌰2.Linux发展历史 •🌰3.企业应用现状 •🌰4.发行版本 &…

jmeter得到的文档数据处理

通过前面jmeter得到的输出文档,这里是txt文档,里面包含了很多条数据,每条数据的结构如下: 【request】 uuid:xxxxxxx timestamp:xxxxxxxx No.x question:xxxxxxx 【response】 code&#…

windows cuda12.1 pytorch gpu环境配置

安装cuda12.1 nvcc -V conda创建pythong3.10环境 conda create -n llama3_env python3.10 conda activate llama3_env 安装pytorch conda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia gpu - Pytorch version for cuda 12.2 - Stack Ov…

传输层 IV(TCP协议——流量控制、拥塞控制)【★★★★】

(★★)代表非常重要的知识点,(★)代表重要的知识点。 一、TCP 流量控制(★★) 1. 利用滑动窗口实现流量控制 一般说来,我们总是希望数据传输得更快一些。但如果发送方把数据发送得…

powerbi -L10-文件夹内的文件名

powerbi -L10-文件夹内的文件名 Folder.Contents letSource Folder.Contents("\\your_folder\ your_folder "),#"Removed Other Columns" Table.SelectColumns(Source,{"Name", "Date modified", "Folder Path"}), in#&q…