MySQL分组查询有关知识总结

news2024/9/24 11:22:39

目录

 4. 分组查询(group by)

4.1 概述

4.2 分组函数

4.2.1 单个使用 

4.2.2 组合使用

4.2.3 注意!

4.3 group by 

4.3.1 单个字段

4.3.2 多个字段  

4.3.3 提醒!

4.4 having

4.5 分组查询演示


 4. 分组查询(group by)

分组查询在DQL语句中非常重要,非常值得花费时间进行学习;

4.1 概述

什么是分组查询呢?

举一个例子,查询一个 student 表中男生的平均成绩,我们首先需要将表分为男,女两个部分,求男生分数的总和,最后求出平均分即可。这个问题就是分组查询。

那么求男生分数的总和需要用到聚合函数,因此在学习分组查询前需要学习聚合函数

4.2 分组函数

分组函数又叫做聚合函数,经常与关键字 group by 搭配使用,分组函数共有五个:

COUNT():统计数量:

MAX:求最大值,

MIN:求最小值;

SUM:求和;

AVG:求平均数 

4.2.1 单个使用 

sum:求和;

count:计数;

max:最大值;

min:最小值;

avg:平均值;

4.2.2 组合使用

 如下,可以同时使用分组函数; 

4.2.3 注意!

(1)分组函数自动忽略空,因此 count  不能统计值为 null 的列。我们经常统计主键来进行计算。

如果统计所有列的话,可以使用 select count(*)from 表名(对所有记录的处理,输出结果为整张表所有记录的行数

即某一行的每一列都不为空,该行就会被统计,避免因字段内容为 null 而忽略统计;

如下,统计的 comm 只有 4 个,但整张表有14 行记录,这是因为 comm 的内容为 null 的10 行没有被统计;

此外, count ( * ) 与 count (常数)的效果是一样的;

(2)null 不参与所有聚合函数的计算

这与前面所说的分组函数自动忽略 null 有关;

(3)分组函数必须先分组再使用(以上演示分组函数没有使用 group by,则默认整张表是一组); 

(4)分组函数不能直接在 where 子句中使用,即不能充当 where 的条件

这涉及到执行顺序:from > where > group by > select > order by ;

如下,分组函数与 where 同时使用,当然会报错;

4.3 group by 
4.3.1 单个字段

 分组查询需要使用 group by 关键字 ;

4.3.2 多个字段  

 group by 后面可以有多个字段;

如下,查询每个部门不同岗位的的平均薪资;

4.3.3 提醒!

 DDL 语句中有 group by 的话,select 后面只能是参与分组的字段或参与分组函数的字段,或者这两者的组合;

4.4 having

having 与 where 功能相似,都是过滤的作用;

但是,where 是 group by 之前过滤,having 是 group by 之后过滤; 

having 必须搭配 group by 使用

另外, 越早过滤效率越高;

4.5 分组查询演示

 在查询数据时,很多时候目标远大 ,一次很难达到,不如将目标分解,一步一步去实现,脚踏实地,稳扎稳打;

如下,分为两次去实现;

 当然,也可以这样写,使查询效率更高;

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

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

相关文章

海外仓怎么入局?货代还有发展的空间吗?

很多货代小伙伴可能都有一个疑惑:海外仓虽然火爆,但是怎么入局呢?显然,自建海外仓的试错代价太高了,成本高、选址难、管理起来更是一地鸡毛。既然无法自建,那转换赛道,管理别人的仓库&#xff0…

iOS面试之属性关键字(二):常见面试题

Q:ARC下,不显式指定任何属性关键字时,默认的关键字都有哪些? 对应基本数据类型默认关键字是:atomic,readwrite,assign 对于普通的 Objective-C 对象:atomic,readwrite,strong Q:atomic 修饰的属性是怎么样保存线程安全的&#x…

如何将本地下载的切片电影进行合成一个视频

合成后的时长1:41 没有合成前是50个电影切片 注明:电影切片不是真实的切片名称而是自定义从0-50的数字 import requests # with open("电影.m3u8","r") as f: # n0 # for line in f: # if line.startswith("#"): …

SpringBoot项目如何安装Selenium自动化(详解)

目录 一、打开intellij idea,创建Maven项目 二、添加依赖 三、在Test路径下创建自动化文件 3.1 项目结构 3.2 代码 四、运行自动化 前言: java版本最低要求为8。电脑至少已安装一种浏览器,如:Chrome(推荐)、…

十日Python项目——第五日(商品数据)

#前言: 在最近十天我会用Python做一个购物类项目,会用到DjangoMysqlRedisVue等。 今天是第五天,主要负责撰写响应具体的商品数据。若是有不懂大家可以先阅读我的前四篇博客以能够顺承。 若是大家基础有不懂的,小编前面已经关于…

RJ45空包弹网口描述与应用

RJ45空包弹网口,通常指的是RJ45接口的空芯线缆(通常称为“空包”)和相应的连接器。这种线缆和连接器组合常用于网络布线中,特别是在需要将网络信号从一端传输到另一端,同时保持信号完整性和隔离性的场合。 描述&#…

C++初阶:list的使用和模拟实现

关于list可以先看一下这个文档:list文档 一.list的介绍和使用 1.1 list的介绍 list实际上就是链表,是带头双向循环链表。 1.2 list的使用 list的使用跟我们以前用C语言实现时的一样。push,pop,insert等等。 1.2.1list的构造 …

【从零开始一步步学习VSOA开发】开发环境搭建

开发环境搭建 开发 VSOA 首先需要搭建开发环境,这里讲解 Windows 下 C/C 开发环境搭建方法。 下载 IDE 并申请授权码 SylixOS 的开发和部署需要 RealEvo-IDE 的支持,因此您需要先获取 RealEvo-IDE 的安装包和注册码。 RealEvo-IDE 分为体验版和商业版…

简单的 微服务netflix 学习

简单的 微服务netflix 学习 一.Eureka 学习 1. 服务简单搭建 1.1 首先确定pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-…

FPGA入门系列:计数器

目录 微信公众号获取更多FPGA相关源码&#xff0c;且微信公众号为首发&#xff0c;第一时间获取最新文章&#xff1a; 计数器是一种典型的时序器件&#xff0c;常用于对时钟脉冲的个数进行计数&#xff0c;还用于定时、分频、产生同步脉冲等 按触发方式分&#xff1a;同步计数…

国内SSL证书颁发机构哪家服务更优质?

SSL证书作为保障网站数据传输安全的关键工具&#xff0c;其重要性不言而喻。选择一个可靠的SSL证书代理商&#xff0c;不仅能够提供多样化的证书类型&#xff0c;而且能在众多品牌中进行比较&#xff0c;选择最适合自己的、性价比更高的产品。此外&#xff0c;优质的代理商还能…

JAVA项目基于Spring Boot的多媒体素材库

目录 一、前言 二、技术介绍 三、项目实现流程 四、论文流程参考 五、核心代码截图 专注于大学生实战开发、讲解和毕业答疑等辅导&#xff0c;获取源码后台 一、前言 信息化管理时代已至&#xff0c;计算机与互联网技术深度融合于生活点滴。本系统源于对用户需求的深刻洞…

Spark学习之SaprkCore

FlinkCore 1、JavaAPI 1、创建一个Topic并写入数据 向Kafka写数据 如果topic不存在则会自动创建一个副本和分区数都是1的topic package com.shujia.kafka;import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerRecord…

JAVASpring学习Day2

面向切面编程 (AOP) 面向切面编程是一种编程范式&#xff0c;用于在程序中分离关注点&#xff0c;例如日志记录、事务管理和安全性。它主要由以下几个关键组成部分构成&#xff1a; 连接点 (Join Point)&#xff1a;在程序执行过程中可以插入切面的点&#xff0c;通常是方法的…

I2C 设备驱动编写流程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、修改设备树1、 IO 修改或添加2、在 i2c1 节点追加 ap3216c 子节点3、查看设备树节点创建是否成功 二、AP3216C 驱动编写 前言 提示&#xff1a;这里可以添…

9.11 与 9.9 哪个大? 大模型幻觉从何而来?用最通俗的例子讲清楚大模型原理。

​如下图&#xff0c;我们使用用 gpt-4-turbo 模型为例&#xff0c;问9.11 与 9.9 哪个大&#xff0c;并让他一步一步给出分析步骤。你会发现&#xff0c;它开始了胡说八道&#xff0c;这就是“大模型幻觉” 。 那么问题来了&#xff0c;为什么会出现这种结果&#xff1f;幻觉从…

【Python代码】如何在多个Excel文件中高效找出含有特定关键词的文件?

点击上方"蓝字" 关注木易巷&#xff01; 哈喽&#xff0c;大家好&#xff0c;木易巷来啦&#xff01; 想象一下&#xff0c;如果你有一个文件夹&#xff0c;里面堆满了近百个Excel文件&#xff0c;你需要从中找出包含特定关键词文本的文件。文件格式不统一&#xf…

仓颉语言 -- 宏

使用新版本 &#xff08;2024-07-19 16:10发布的&#xff09; 1、宏的简介 宏可以理解为一种特殊的函数。一般的函数在输入的值上进行计算&#xff0c;然后输出一个新的值&#xff0c;而宏的输入和输出都是程序本身。在输入一段程序&#xff08;或程序片段&#xff0c;例如表达…

【OpenCV C++20 学习笔记】提取水平和垂直线条

提取水平和垂直线条 原理实操——去除五线谱的五线二进制化提取垂直对象完善边缘和最终输出图片黑白反转平滑 完整代码 其他图片元素提取实践提取水平线条提取音符轮廓 原理 在腐蚀和膨胀操作中&#xff0c;通过卷积核(kernel)&#xff0c;或者结构元素(structuring element)&…

vue-router核心TS类型

NavigationFailureType 枚举&#xff1a; export declare enum NavigationFailureType {/*** An aborted navigation is a navigation that failed because a navigation* guard returned false or called next(false)*/aborted 4,/*** A cancelled navigation is a navigati…