【MySQL】第十部分 常用的聚合函数

news2025/2/27 23:22:53

【MySQL】第十部分 常用的聚合函数


文章目录

  • 【MySQL】第十部分 常用的聚合函数
  • 10. 常用的聚合函数
    • 10.1 MIN和MAX函数
    • 10.2 COUNT函数
    • 10.3 AVG和SUM函数
    • 10.4 GROUP BY
    • 10.5 HAVING
  • 总结


10. 常用的聚合函数

定义: 对一组数据进行汇总的函数输入的是一组数据的集合输出的是单个值

聚合函数不能像单行函数那样嵌套使用!!!


10.1 MIN和MAX函数

可以对任意数据类型的数据使用 MIN 和 MAX 函数。

SELECT MAX(commission_pct),MIN(commission_pct)
FROM employees;

SELECT MAX(last_name),MIN(last_name)
FROM employees;

在这里插入图片描述


10.2 COUNT函数

COUNT(*) : 返回表中记录总数,适用于任意数据类型,跟 NULL 和非 NULL 无关

COUNT(1) : 里面的1表示的是将每行用1去表示,一样是记录总数,里面的1可以替换任何常数,适用于任意数据类型

COUNT(列名) : 需要注意它不会统计此列为 NULL 值的行!!!

SELECT COUNT(1),COUNT(2),COUNT(*),COUNT(commission_pct),COUNT(IFNULL(commission_pct,1))
FROM employees;

在这里插入图片描述


10.3 AVG和SUM函数

可以对数值型数据使用AVG 和 SUM 函数。

# 公式 : AVG() = SUM() / COUNT()  可以体现出SUM(列名),AVG(列名),COUNT(列名)都是不会去统计列为NULL值的行
SELECT AVG(IFNULL(commission_pct,0)),SUM(commission_pct)/COUNT(IFNULL(commission_pct,0)),
AVG(commission_pct),SUM(commission_pct)/COUNT(commission_pct)
FROM employees;

在这里插入图片描述


10.4 GROUP BY

# 按照这个顺序
SELECT * 
FROM TABLE
WHERE      条件
GROUP BY   分组
ORDER BY 	 排序
LIMIT			 限制

单分组

SELECT department_id, AVG(salary)
FROM employees
GROUP BY department_id ;

在这里插入图片描述

多分组

SELECT department_id,job_id,AVG(salary)
FROM employees
GROUP BY department_id,job_id;

在这里插入图片描述

GROUP BY 声明的字段, 虽然SELECT可以不出现, 但是这样做会降低可读性

# 造成可读性很差,你不知道哪个部门对应哪个数据
SELECT AVG(salary)
FROM employees
GROUP BY department_id;

SELECT出现的非聚合函数字段,GROUP BY也必须要声明,否则会出错!!! 例如下面举例

# 一个部门有多个工种,如果以部门为单位求平均值,那么多个工种该如何显示??
SELECT department_id,job_id,AVG(salary)
FROM employees
GROUP BY department_id;

综上所述: 在SELECT列表中所有未包含在聚合函数中的列都应该包含在 GROUP BY子句中,需要一一对应.


10.5 HAVING

HAVING的使用规范:

  1. 过滤条件包含聚合函数的时候使用 HAVING,并且是写在GROUP BY后面

  2. 在WHERE中不能使用聚合函数作为筛选条件

  3. HAVING 不能单独使用,必须要跟 GROUP BY 一起使用

  4. WHERE 和 HAVING 也不是互相排斥的,我们可以在一个查询里面同时使用 WHERE 和 HAVING

  5. 从开发中HAVING的适用范围更广, 但是当过滤条件中没有聚合函数, WHERE和HAVING都可以使用的情况下,WHERE的执行效率更高

# 查询各个部门的最高薪资并且大于12000
SELECT department_id,MAX(salary)
FROM employees
GROUP BY department_id
HAVING MAX(salary)> 12000;
# 查询10,20,30,40号部门中最高薪资并且大于10000
# 写法一
SELECT department_id,MAX(salary)
FROM employees 
WHERE department_id IN(10,20,30,40)
GROUP BY department_id
HAVING MAX(salary) > 10000;

# 写法二 (不推荐,效率低,后面会说)
SELECT department_id,MAX(salary)
FROM employees 
GROUP BY department_id
HAVING MAX(salary) > 10000 AND department_id IN(10,20,30,40);

总结

以上就是今天要讲的内容,希望对大家有所帮助!!!

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

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

相关文章

英语学习打卡day5

2023.1.25 1.aqua n.水;溶液;浅绿色 The construction of underground aqua storage tank 地下水储罐的建设 2.do sth for dear life 拼命做某事 If you do something for dear life, you do it with as much effort as possible, usually to avoid danger. 3. 4.swoop …

vue-grid-layout数据可视化图表面板优化过程所遇问题汇总

对于drag事件不熟悉的,请先阅读:《drag事件详解:html5鼠标拖动排序及resize实现方案分析及实践》之前老项目grafana面板,如下图所示(GEM添加图表是直接到图表编辑,编辑完成后自动插入到面板最后&#xff09…

Flume集群安装部署、Kafka集群安装部署以及Maxwell安装部署实战

1、Flume集群安装部署 1.1、安装地址 Flume官网地址:http://flume.apache.org/文档查看地址:http://flume.apache.org/FlumeUserGuide.html下载地址:http://archive.apache.org/dist/flume/ 1.2、安装部署 将apache-flume-1.9.0-bin.tar.…

Redis实现笔记点赞排行榜 | 黑马点评-达人探店

一、发布探店笔记 探店笔记类似点评网站的评价,往往是图文结合。对应的表有两个 探店笔记表(主键、商户id、用户id、标题、文字、图片、探店文字描述、点赞数量、评论数量)评价表(笔记的评价)先上传图片请求一次保存…

【Java基础】--Java排序

【Java基础】--Java排序1、选择排序(Select Sort)2、冒泡排序(Bubble Sort)3、插入排序(Insert Sort)4、希尔排序(Shell Sort)5、归并排序(Merge Sort)6、快速排序(Quick Sort)7、堆排序(Heap Sort)小结待排序的元素需要实现 Java 的 Comparable 接口,该接口有 com…

Facebook SEO中参与度的重要性

参与度,也就是大家所说的浏览量,在 Facebook SEO中也叫做页面访问者参与度。一般来说, Facebook的用户在上面停留的时间越长代表着它在用户心目中的形象越好,这也是为什么 Facebook上的访客愿意打开自己的 Facebook页面让好友帮忙…

使用vite构建vue3项目详细介绍(ts+pinia+sass+vue-router+axios+element-plus)

使用vite构建vue3项目详细介绍(tspiniasassvue-routeraxioselement-plus) 1. 创建项目 npm init vitelatest 2. 配置 vite.config.ts path需要安装--npm install types/node --save-dev import vue from vitejs/plugin-vue; import { resolve } from path; import { defineC…

Jupyter的安装与默认目录的切换

下载与安装 清华大学开源软件镜像站 使用国内镜像下载更快,官网下载很慢 下载msi镜像文件,打开安装: 安装完成后得到4个文件 Reset Spyder...和Anaconda Powershell....都是相应的配置,其中后者是Jupyter和anaconda的dos命令窗口…

Coolify系列02-从0到1超详细手把手教你上手Coolify

重启 如果由于某种原因,你的实例崩溃了,你可以用下面的命令重新启动它: wget -q https://get.coollabs.io/coolify/install.sh \ -O install.sh; sudo bash ./install.sh -r防火墙设置 您需要在防火墙中允许以下端口 Coolify: 3000 (required)Revers…

【Mysql】Mysql的存储引擎

【Mysql】Mysql的存储引擎 文章目录【Mysql】Mysql的存储引擎1.概述2. 特点2.1 InnoDB2.2 MyISAM2.3 Memory2.4 区别3. 选择1.概述 **存储引擎:存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。**存储引擎是基于表的,而不是 基于库的&…

HTTPS工作原理详解加密(TLS握手)过程

HTTPS概念 HTTPS就是一个有安全保障的HTTP通信,我们都知道,http是明文传输的,http报文是人肉眼就可识别的ASCII码,在通信过程中,http报文很容易被黑客窃听、篡改、伪造,而在互联网交易中,我们必…

【1】初识Linux

学习笔记目录 学习教程:B站 “黑马程序员” 初识Linux--入门Linux基础命令--会用Linux权限管控--懂权限Linux实用操作--熟练实战软件部署--深入掌握脚本&自动化--用的更强项目实战--学到经验云平台技术--紧跟潮流 操作系统概述 1.计算机由硬件和软件两个主要…

AcWing 12. 背包问题求具体方案

AcWing 12. 背包问题求具体方案AcWing 12. 背包问题求具体方案(1)问题(2)分析(3)代码AcWing 12. 背包问题求具体方案 (1)问题 (2)分析 我们先看一下这道题中…

tomcat更改默认端口

如下图把conf目录下的server.xml的下图所示处由原来的8080改为需要的即可;当前改为8087;保存之后重启tomcat; 网上一个资料说如果要运行2个tomcat,把下图的8009改为自己的,例如18009, 把下图的8005改为自己…

pythpon基础:创建文件索引升级版

需求环境 这是公司的一个需求,有一份很庞大的数据由好多视频文件组成,总共有12T左右,视频来源是一些下载的视频素材。每隔一段时间就要将一部分筛选好的视频文件剪切到server02服务器进行转码,筛选没被选中的文件将被删除。从下载…

5. 蒙特卡洛方法

蒙特卡洛方法5. 离轨策略5.1 策略评估(基于重要度采样)5.1.1 计算目标策略下的状态值5.1.2 蒙特卡洛算法(状态值估计)5.1.3 增量式的实现5.2 策略迭代5.3 减少重要性采样方差的方法5.3.1 折扣敏感的重要性采样5.3.2 每决策重要性抽…

go 语言 string 类型思考

string 作为 go 语言中的基础类型,其实有一些需要反复揣摩的,可能是我们使用的场景太简单,也可能是我们不需要那可怜的一点优化来提高性能,对它也就没那么上心了。 文章运行环境:go version go1.16.6 darwin/amd64 并…

浅析Java中的final关键字

一.final关键字的基本用法 在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本用法。 1.修饰类 当用final修饰一个类时,表明这个类不能被继承。也就是说&a…

ACL访问控制的基本实例

典型案例: 配置需求∶ 在Router上部署基本ACL后,ACL将试图穿越Router的源地址为192.168.1.0/24网段的数据包过滤掉,并放行其他流量,从而禁止192.168.1.0/24网段的用户访问Router右侧的服务器网络。 配置: 1、Router已…

第三章 变量

一、数据类型(P40) 每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)。二、整数类型 整型的使用细节: (1)Java 各整数类型有固定的范围和字段长度,不受具体OS【操作系…