【DataBase】MySQL 12 SQL函数 聚合函数
视频参考自:P53 - P58
https://www.bilibili.com/video/BV1xW411u7ax
什么是分组函数?
用来统计使用,其具体的实现都是基于对字段的值聚合再处理
又称为【聚合函数】或者【组函数】
聚合函数的种类:
- 1、sum 求和
- 2、avg 平均
- 3、max 最大
- 4、min 最小
- 5、count 计数记录数
单个使用
-- 演示使用
SELECT SUM(`salary`) FROM `employees`;
SELECT AVG(`salary`) FROM `employees`;
SELECT MAX(`salary`) FROM `employees`;
SELECT MIN(`salary`) FROM `employees`;
SELECT COUNT(`salary`) FROM `employees`;
组合使用
SELECT
SUM(`salary`) 工资总和,
AVG(`salary`) 平均工资,
MAX(`salary`) 最高工资,
MIN(`salary`) 最低工资,
COUNT(`salary`) 人员个数
FROM `employees`;
参数可支持的类型?
- 1、sum & avg 用于处理数值型字段
- 2、max & min & count 可处理任何类型
- 3、所有函数都会忽略NULL值,如果不希望忽略,使用IFNULL对字段处理
- 4、搭配distinct可实现去重运算
-- 返回0,0字符不支持求和&平均
SELECT SUM(`last_name`),AVG(`last_name`) FROM `employees`;
-- 时间换算成毫秒值,再进行聚合运算,返回毫秒值 【时间戳】
SELECT SUM(`hiredate`),AVG(`hiredate`) FROM `employees`; -- 可以找出最大值最小值的字符串
SELECT MAX(`last_name`),MIN(`last_name`) FROM `employees`;
-- 时间本质是毫秒值,当然也可以求值【MAX表示最新时间,MIN表示最早时间】
SELECT MAX(`hiredate`),MIN(`hiredate`) FROM `employees`; -- 计数记录数,要注意的是!不会记录NULL值
SELECT COUNT(`last_name`) FROM `employees`; -- 要实现NULL值计数,我们要对字段进行IFNULL处理,设置缺省值
SELECT COUNT(IFNULL(`commission_pct`,0)) FROM `employees`;
去重运算
-- 去重运算
SELECT SUM(DISTINCT `salary`) 去重总工资,SUM(`salary`) 非去重总工资 FROM `employees`;
SELECT COUNT(DISTINCT `salary`) 不同工资的人员个数,COUNT(`salary`) 所有人员个数 FROM `employees`;
COUNT函数的具体介绍
-- COUNT函数的详细介绍
SELECT COUNT(`salary`) FROM `employees`; -- 对单个字段计数记录数
SELECT COUNT(*) FROM `employees`; -- 对所有字段统计记录数[任意一个字段的记录为null,此函数都会忽略计数]
SELECT COUNT(1) FROM `employees`; -- [在返回的查询表中添加了一列参数的字段,并统计记录数] -- 效率问题
-- MyISAM 引擎 COUNT(*) 最高效
-- INNODB 引擎 COUNT(*) COUNT(1)的效率差不多 比COUNT(字段)效率高【因为字段需要判断NULL值】 -- 推荐使用 * 作为COUNT函数的参数计数
不要尝试分组函数和字段一并查询
-- 因为分组函数会限制字段的记录结果
SELECT AVG(`salary`),`last_name` FROM employees; -- 8版本的MySQL不再允许这样的SQL语法,直接提示语法错误
/*
错误代码: 1140
In aggregated query without GROUP BY,
expression #2 of SELECT list contains nonaggregated column 'myemployees.employees.last_name';
this is incompatible with sql_mode=only_full_group_by
*/
案例练习
-- 案例练习
-- 查询公司员工工资最大值最小值平均值求和
SELECT
MAX(`salary`) 最高工资,
MIN(`salary`) 最低工资,
AVG(`salary`) 平均工资,
SUM(`salary`) 实发合计
FROM
`employees`; -- 员工表种的最大入职时间和最小入职时间的相差天数
SELECT
MIN(`hiredate`) 最早入职时间,
MAX(`hiredate`) 最晚入职时间,
DATEDIFF(MAX(`hiredate`) , MIN(`hiredate`)) 相差天数 -- DATEDIFF()函数,求两个时间差
FROM
`employees`; SELECT DATEDIFF(NOW(),'1997-09-06'); -- 查询部门编号为90的员工个数
-- 幻想可以直接这么写... SELECT COUNT(`department_id`=90) from `employees`;
SELECT COUNT(`department_id`)
FROM `employees`
WHERE `department_id` = 90;
【DataBase】MySQL 12 SQL函数 聚合函数的更多相关文章
- SQL Server 聚合函数算法优化技巧
Sql server聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了一个重点,一个程序优化的好不好直接决定了这个程序的声明周期.Sql server聚合函数对一组值 ...
- mysql数据库查询和聚合函数
1.模糊查询 like % 表示多个任意字符 _ 表示任意一个字符 例如:查询黄姓同学 select * from student where name '黄%' select * from stud ...
- 数据库开发基础-SQl Server 聚合函数、数学函数、字符串函数、时间日期函数
SQL 拥有很多可用于计数和计算的内建函数. 函数的语法 内建 SQL 函数的语法是: SELECT function(列) FROM 表 函数的类型 在 SQL 中,基本的函数类型和种类有若干种.函 ...
- MySQL实现SQL Server排名函数
最近在MySQL中遇到分组排序查询时,突然发现MySQL中没有row_number() over(partition by colname)这样的分组排序.并且由于MySQL中没有类似于SQL Ser ...
- SQL Server聚合函数
聚合函数对一组值计算后返回单个值.除了count(统计项数)函数以外,其他的聚合函数在计算式都会忽略空值(null).所有的聚合函数均为确定性函数.即任何时候使用一组相同的输入值调用聚合函数执行后的返 ...
- MySQL最常用分组聚合函数
一.聚合函数(aggregation function)---也就是组函数 在一个行的集合(一组行)上进行操作,对每个组给一个结果. 常用的组函数: AVG([distinct] expr) 求平均值 ...
- MySql 学习之路-聚合函数
下面是mysql 数据库中经常用到的聚合函数的简单实例 -- 创建学生表 create table student ( id int primary key auto_increment commen ...
- (2.17)Mysql之SQL基础——日期函数
关键词:mysql时间函数,mysql日期函数 [1]curdate():返回当前日期(2019-03-06),curdate()+0 返回(20190306) [2]curtime():返回当前时间 ...
- 深入学习之mysql(四)聚合函数
聚合函数:COUNT统计记录的条数.SUM求和函数.AVG求平均值.MAX求最大值.MIN求最小值 一.COUNT练习: 1.统计学校一共有多少个学生: mysql> SELECT COUN ...
- PCB MS SQL CLR聚合函数(函数作用,调用顺序,调用次数) CLR说明
用CLR写函数:标量函数,表值函数 很好理解,如果用聚合函数则不是那么好理解了, 这里将CLR函数说明一下,其实关键是对聚合函数说明 用CLR写聚合函数关键点,是要理解CLR与SQL是如何进行数据交互 ...
随机推荐
- React脚手架 创建React项目
React团队主要推荐使用create-react-app来创建React新的单页应用项目的最佳方式. React脚手架(create-react-app)意义 脚手架是官方提供,零配置,无需手动配置 ...
- 算法学习笔记(39): 2-SAT
SAT 问题,也就是可满足性问题 Boolean Satisfiability Problem,是第一个被证明的 NPC 问题. 但是特殊的 2-SAT 我们可以通过图论的知识在线性复杂度内求解,构造 ...
- #9134.反转eehniy
blog 题面 yinhee 去面试 Google 总裁. 面试官给他了一个长度为 \(n\) 的 \(01\) 串. 面试官给他以下两种操作是的这个序列前 \(n-m\) 个数字与后 \(n-m\) ...
- 小米 红米 Redmi MIUI 5G开关
小米 红米 Redmi MIUI 5G开关 1.打开手机拨号界面输入 *#*#54638#*#* 之后拨号界面底部会显示display 5G network menu (显示5G网络菜单) 注意:先是 ...
- 跨域iframe 配置fullscreen权限
在新版本的 Chrome 等浏览器中,默认情况下禁止了跨域 iframe 开启全屏的权限.在 iframe 中,我们通常使用 element.requestFullscreen() 方法来进行全屏展示 ...
- 深入理解Android View(1)
做android其实也有一段时间了,我们每个人都会碰到一些这样或那样的问题,碰到问题了就拼命百度,可是发现,我们解决问题的能力并没有提升很多,所以我才有想总结一下我项目中所用过的相关知识,并了解一下A ...
- 17-Docker镜像和容器操作
镜像 拉取镜像(下载镜像) 镜像是层次型的,拉取的时候会按照各层分别拉取. 每一个镜像都有自己的散列值,用来唯一标记一层镜像,可以用来判断本地是否已经拉取过此镜像层,如果已经拉取,则直接使用. doc ...
- .net core SM2加密+PKCS8实现
前阵子在对接银行接口,对方给出的加密方式是SM2,在网上找了不少教程,都是使用Portable.BouncyCastle实现的,功能实现后发现对方给出的密钥格式是PKCS8,下面代码记录一下PKCS8 ...
- 了解Microsoft Media Foundation
关于Microsoft Media Foundation 是什么 Microsoft Media Foundation是用来处理(创建.修改.传输.合成)多媒体数据(音视频)的一个平台. 有什么用 M ...
- hive第一课:Hive3.1.2概述与基本操作
Hive3.1.2概述与基本操作 1.Hive基本概念 1.1 Hive简介 Hive本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据存储,说白了hive可以理解为一个将 ...