MySQL学习笔记5:常见函数(二) 分组函数

简介

本系列(MySQL学习笔记)是我基于B站上很是受欢迎的MySQL 基础+高级篇- 数据库 -sql -尚硅谷视频所作的笔记,方便你们学习和掌握MySQL。mysql

说明

1.这个系列基本包含了视频中老师讲课的全部内容,包括知识点、案例、部分测试题。
2.所需的配套资料(来自B站评论区)web

@黎曼的猜测:
配套资料下载–>公众号公众号 DragonWell 回复:mysql 注意:是公众号!!是公众号!!是公众号,点那个 搜一搜 搜索!!!
不是私人号,是公众号!!! (能够直接在 搜一搜 搜索 dragonwell) 名称是:DragonWell公众号sql

3.SQLyog的安装(来自B站评论区)数据库

@江左萌粽猪 连接:https://pan.baidu.com/s/18PDjbqEeDSAjQM0VQye6og 提取码:qjuzide

目录

MySQL学习笔记1:select查询(一) 基本用法
MySQL学习笔记2:select查询(二) 条件查询
MySQL学习笔记3:select查询(三) 排序查询
MySQL学习笔记4:常见函数(一) 单行函数
MySQL学习笔记5:常见函数(二) 分组函数svg

常见函数的学习

函数功能:将逻辑语句封装在方法体中,对外暴露方法名
调用:select 函数名(实参列表) [from];
特色:
	函数名,函数功能
分类:
	单行函数(ifnull ,concat, length) 输入一个值返回一个值	
	分组函数,作统计使用 又称为统计函数、聚合函数、组函数
常见单行函数:
	字符函数:length,concat,substr,instr,upper,lower,lpad,rpad,replace
	数学函数:round,ceil,floor,truncate,mod
	日期函数:now,curdate,curtime,year,monthname,str_to_date,date_format
	其余函数:version,database,user
	控制函数:if,case
单行函数见MySQL学习笔记4:常见函数(一)

二.分组函数

功能:用作统计使用,又称聚合函数,统计函数,组函数
分类:

sum 求和
avg 平均值
max 最大值
min 最小值
count 计算非HULL值的个数

特色:
1.sum ,avg 值处理数值型,max,min,count 能够处理任何类型
2.以上分组函数都忽略NULL3.能够和distinct搭配使用实现去重
4.count函数介绍:
通常使用count(*)统计行数
5.补充
和分组函数一同查询的字段要求是group by 后的字段

1.简单使用

SELECT SUM(salary) FROM employees;
SELECT ROUND(AVG(salary),2) AS 平均 ,COUNT(salary) AS 数量 FROM employees;

2.参数支持哪些类型: 处理数值型

SELECT SUM(last_name),AVG(hiredate) FROM employees; # 0 没意义、
SELECT MAX(last_name),MIN(last_name) FROM employees; # 有意义
SELECT COUNT(last_name),COUNT(commission_pct) FROM employees; # 只计算不为NULL的个数

3.分组函数忽略NULL值

SELECT SUM(commission_pct),AVG(commission_pct)*35 FROM employees; # 忽略了NULL

4.distinct

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

SELECT COUNT(DISTINCT salary),COUNT(salary) FROM employees;

5. count

SELECT COUNT(*) FROM employees; # 统计行数
SELECT COUNT('Ngeu') FROM employees; # 加任意常量,统计行数
效率:MYISAM存储引擎下,count(*)的效率高
INNoDB存储引擎下,count(*),count(1)的效率差很少,比count(字段)高一些

6.和分组函数一同查询的字段有限制

SELECT AVG(salary),employee_id FROM employees; #无心义!avg返回一个值,后者返回一个表格

测试题

查询员工表中最大入职时间和最小入职时间的相差天数(difference)
SELECT DATEDIFF('2020-07-15','2011-05-01');
SELECT DATEDIFF(MAX(hiredate),MIN(hiredate)) AS difference FROM employees;
查询部门编号为90 的员工个数
SELECT COUNT(*) FROM employees WHERE department_id=90;