mysql聚合函数

文章目录

  • 前言
  • 一、常见的聚合函数
    • 1.avg和sum函数
    • 2.max和min函数
    • 3.count函数
  • 二、group by的使用
  • 1.基本使用方法
    • 2.with rollup 求平均值
  • 三、having关键字的使用
  • 四、多表连接聚合函数
    • 1.sql92语法总结
    • 2.sql99语法总结
  • 总结


前言

聚合函数:他是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。


一、常见的聚合函数

1.avg和sum函数

SELECT AVG(salary),SUM(salary)
FROM employees;

在这里插入图片描述

2.max和min函数

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

在这里插入图片描述
日期最大和最小

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

在这里插入图片描述

3.count函数

SELECT COUNT(employee_id),COUNT(salary),COUNT(2*salary),COUNT(1)
FROM employees;

在这里插入图片描述
但是要注意null值并不会被计数,所以要计算不为空的段落

SELECT COUNT(commission_pct)
FROM employees;

在这里插入图片描述

平均值的三种计算方法
在这里插入图片描述count计算数据记录的方法效率
在这里插入图片描述
在这里插入图片描述


二、group by的使用

1.基本使用方法

每个部门员工的平均工资
SELECT AVG(salary),department_id
FROM employees
GROUP BY department_id;

在这里插入图片描述

查询各个job_id的平均工资

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

在这里插入图片描述

查询各个部门的不同工种的平均工资

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

在这里插入图片描述

注意:
在这里插入图片描述在这里插入图片描述

2.with rollup 求平均值

在这里插入图片描述
这个最后一列是多出的平均值

查询各个部门的平均工资,按照平均工资升序排列。

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

在这里插入图片描述

但是在mysql5.7中如果我们加with rollup是无法排序的,因为平均值是不属于avg_sal这个组的
我这里是8.x版本不报错

SELECT department_id,AVG(salary) avg_sal
FROM employees
GROUP BY department_id WITH ROLLUP
ORDER BY avg_sal ASC;

在这里插入图片描述

三、having关键字的使用

部门的最高工资比10000高的部门

SELECT department_id,MAX(salary) avg_sal
FROM employees
WHERE MAX(salary) > 10000
ORDER BY department_id;

这样写会报错

在这里插入图片描述在这里插入图片描述
我们换成having

SELECT department_id,MAX(salary) avg_sal
FROM employees
HAVING MAX(salary) > 10000
ORDER BY department_id;

还是报错
在这里插入图片描述在这里插入图片描述

这样执行就正常了

所以在开发中只有使用了group by 我们才会使用having
查询部门id为10,20,30,40这几个部门中最高工资比10000高的部门

方式1:

SELECT department_id,MAX(salary)
FROM employees
WHERE department_id IN (10,20,30,40)
GROUP BY department_id
HAVING MAX(salary) > 10000;

在这里插入图片描述

方式2:

SELECT department_id,MAX(salary)
FROM employees
GROUP BY department_id
HAVING MAX(salary) > 10000 AND department_id IN (10,20,30,40);

在这里插入图片描述

效率:方法一比方法二效率高

在这里插入图片描述在这里插入图片描述


四、多表连接聚合函数

1.sql92语法总结

在这里插入图片描述

2.sql99语法总结

在这里插入图片描述
执行顺序:
在这里插入图片描述执行流程:
在这里插入图片描述


总结

例如:以上就是今天要讲的内容,本文仅仅简单介绍mysql聚合函数的基本操作和基本原理,里面有很多示例,希望大家多动手,麻烦看到这里的朋友点个👍,谢谢大家。

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

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

相关文章

3 个自定义防抖 Hooks 的实现原理

前言— 本文通过实现 useDebounceFn、useDebounce、useDebounceEffect 3 种自定义防抖 Hooks,来介绍在日常开发过程中自定义 Hooks 的思路及实现,帮助大家完成通用 Hooks 来提高开发效率。 防抖— 防抖的概念已经司空见惯了,这里稍作简单介…

Golang每日一练(leetDay0034) 二叉树专题(3)

目录 100. 相同的树 Same Tree 🌟 101. 对称二叉树 Symmetric Tree 🌟 102. 二叉树的层序遍历 Binary Tree Level-order Traversal 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一…

程序设计方法学

体育竞技分析 问题分析 体育竞技分析 需求:毫厘是多少? 如何科学分析体育竞技比赛? 输入:球员的水平 输出:可预测的比赛成绩 体育竞技分析:模拟N场比赛 计算思维:抽象 自动化 模拟&am…

【算法题】2583. 二叉树中的第 K 大层和

题目: 给你一棵二叉树的根节点 root 和一个正整数 k 。 树中的 层和 是指 同一层 上节点值的总和。 返回树中第 k 大的层和(不一定不同)。如果树少于 k 层,则返回 -1 。 注意,如果两个节点与根节点的距离相同&…

能够翻译文档的免费软件-免费翻译整个文档的软件

chatgpt怎么实现批量翻译 ChatGPT是一种基于人工智能技术的自然语言处理软件,可以实现快速、准确的批量翻译操作,同时也支持多种语言翻译。下面是 ChatGPT 的批量翻译操作流程: 步骤 1: 确定翻译语言和翻译文本 首先需要确定要翻译的原文本…

java学习之局部内部类

目录 一、内部类简介 二、内部类的分类 三、局部内部类 第一点 第二点 第三点 第四点 第五点 第六点 第七点 一、内部类简介 类的五大成员:属性、方法、构造器、代码块、内部类 package com.hspedu.innerclass;public class InnerClass01 {public static…

AOP与SpringBoot使用AOP实例

AOP:Aspect Oriented Programming(面向切面编程、面向方面编程),其实就是面向特定方法编程。 动态代理是面向切面编程最主流的实现。而SpringAOP是Spring框架的高级技术,旨在管理bean对象的过程中,主要通过…

Windows使用Dockers+battery historian踩坑记

1、首先,需要翻墙。 2、然后安装Dockers,网上好多博客说安装Docker Toolbox,我亲测无效,卸载后安装Docker for Windows,安装完成后打开,会提示: Hardware assisted virtualization and data e…

Mybatis03学习笔记

目录 使用注解开发 设置事务自动提交 mybatis运行原理 注解CRUD lombok使用(偷懒神器,大神都不建议使用) 复杂查询环境(多对一) 复杂查询环境(一对多) 动态sql环境搭建 动态sql常用标签…

大数据实战 --- 淘宝用户行为

目录 开发环境 数据描述 功能需求 数据准备 数据清洗 用户行为分析 找出有价值的用户 开发环境 HadoopHiveSparkHBase 启动Hadoop:start-all.sh 启动zookeeper:zkServer.sh start 启动Hive: nohup hiveserver2 1>/dev/null 2>…

生成树端口选举

所有交换机运行RSTP,SW1优先级4096,SW2优先级4096,SW3优先级8192,SW1的G0/0/1、G0/0/2接口通过手动模式加入Eth-Trunk 1,SW1的G0/0/3、G0/0/4接口通过手动模式加入Eth-Trunk 2,SW2的G0/0/1、G0/0/2接口通过手动模式加入Eth-Trunk 1,SW3的G0/0/1、G0/0/2接口通过手动模式…

【Python】Python读写.xlsx文件(基本操作、空值补全等)

【Python】Python读写.xlsx文件(Pandas) 文章目录 【Python】Python读写.xlsx文件(Pandas)1. 介绍2. Pandas读写xlsx文件2.1 基本操作2.1.1 实现任务2.1.2 代码2.1.3 结果 2.2 进阶操作2.2.1 写操作2.2.2 查看数据表的基本信息2.2…

电脑有自带的录屏功能吗?电脑录屏如何录人脸

案例:所有电脑都有自带的录屏功能吗? “在网上了解到电脑有录屏功能,但是我在我的电脑上又找不到。想问问小伙伴们是所有的电脑都有自带的录屏功能吗?怎样才能找到电脑自带的录屏功能?” 在日常使用电脑时&#xff0…

Python 无监督学习实用指南:1~5

原文:Hands-on unsupervised learning with Python 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关…

封装通用el-form表单(2种方式)

1、序言 项目地址:git clone form-demo: 封装通用el-form 一个后台管理系统最常见的是表单,表单最常见的是输入框、下拉选择、日期选择、单选、复选框等等, 系统添加若干模块,就复制粘贴若干个el-form、el-form-item,有…

重学Java设计模式-行为型模式-责任链模式

重学Java设计模式-行为型模式-责任链模式 内容摘自:https://bugstack.cn/md/develop/design-pattern/2020-06-18-重学 Java 设计模式《实战责任链模式》.html#重学-java-设计模式-实战责任链模式「模拟618电商大促期间-项目上线流程多级负责人审批场景」 责任链模…

Shell 脚本编程

1. shell 概述 🥞 shell 是一个命令行解释器,它能接受应用程序、用户 的命令,然后调用操作系统内核。 ⭐ 还是一门 功能强大的编程语言,易编写、易调试、灵活性强。 2. shell入门 (1)脚本格式 &#x1f…

js中 = 等号赋值的问题,Js中对象的引用问题,深浅拷贝

js "" 赋值符号 在js中 “”对于基本数据类型是赋值符号,比较( 或 )的时候是值;对于引用数据类型-对象来说 是地址引用,比较的时候是比较的地址。 基本数据类型和引用数据类型的比较 let a 3; let b a;…

离散数学_九章:关系(1)

关系 9.1关系及其性质 1、二元关系 2、集合A上的关系 3、n元素集合 有多少个关系? 4、关系的性质 1. 自反 2. 对称 3. 反对称 4. 传递 5、关系的组合 关系的合成 关系的幂 9.1关系及其性质 1、二元关系 设A和B是集合,一个从 A 到 B 的二元关…

stm32当中GPIO输出知识点汇总(GPIO的八种模式及其原理)

一、GPIO工作模式. 1. 四种输入模式 GPIO_Mode_IN_FLOATING 浮空输入模式 GPIO_Mode_IPU 上拉输入模式 GPIO_Mode_IPD 下拉输入模式 GPIO_Mode_AIN 模拟输入模式 2. 四种输出模式 GPIO_Mode_Out_OD 开漏输出模式 GPIO_Mode_Out_PP 推挽输出模式 GPIO_Mod…