SQL学习 — DQL — 常见函数 — 分组函数
4. 常见函数(附加)
/*
概念:类似于java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名。
好处:1.隐藏了实现细节 2.提高代码的重用性
调用语法:select 函数名(实参列表) 【from 表】;
特点:
1.叫什么(函数名)
2.干什么(函数功能)
分类:
1.单行函数
功能:做处理
如:cancat \ length \ ifnull等
2.分组函数
功能:做统计使用,又称为统计函数、聚合函数、组函数
*/
4.3 分组函数
# 分组函数
/*
功能:用作统计使用,又称为聚合函数或统计函数或组函数
分类:
sum 求和
avg 求平均
max 最大值
min 最小值
count 计算
特点:
1.sum \ avg 一般用于处理数值型
max \ min \ count 可以处理任何类型
2.以上分组函数均忽略Null值
3.可以和distinct搭配实现去重的运算
count函数单独介绍:
1.一般用count(*)统计行数
注意:和分组函数一同查询的字段要求是group by后的字段
*/
-
简单的使用 :返回一个值
#1. 简单的使用: 返回一个值 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; # 案例1:统计工资的总和,四舍五入工资的平均值并保留小数点后2位 SELECT SUM(salary) AS '和', ROUND(AVG(salary),2) AS '平均' FROM employees;
-
参数分别支持哪些类型
#2. 参数支持哪些类型 SELECT SUM(last_name), AVG(last_name) FROM employees; #适用处理数值型 SELECT MAX(last_name), MIN(last_name) FROM employees; #适用任何类型 SELECT MAX(hirecate), MIN(hirecate) FROM employees; SELECT COUNT(commission_pct) FROM employees; #适用任何类型 SELECT COUNT(last_name) FROM employees;
-
是否忽略Null
#3.是否忽略Null SELECT SUM(commission_pct), AVG(commission_pct), # sum \ avg \ max \ min \ count 均忽略Null值 SUM(commission_pct) / 35, SUM(commission_pct) / 107 FROM employees;
-
和distinct搭配
#4.和distinct搭配 SELECT SUM(DISTINCT salary), SUM(salary) FROM employees; SELECT COUNT(DISTINCT salary), COUNT(salary) FROM employees;
-
count函数的详细介绍
#5.count函数的详细介绍 SELECT COUNT(salary) FROM employees; SELECT COUNT(*) FROM employees; #统计非Null行数 SELECT COUNT(1) FROM employees; #括号里的内容相当于直接在表中加了一列都是该内容,行数与其他列一致 #效率分析: MYISAM存储引擎下,COUNT(*)的效率高 INNODB存储引擎下,COUNT(*)和COUNT(1)的效率差不多,比COUNT(字段)要高一些
-
和分组函数一起查询的字段会有限制
#6. 和分组函数一起查询的字段有限制 # 显示的结果是错的,原因是avg为分组函数只作统计后一个结果,而employee_id是有107个结果,但必须显示成一个,所以结果是错误的 SELECT AVG(salary), employee_id FROM employees;
4.4 分组函数练习
# 将以下内容复制到sql图像化客户端界面进行思考
#1. 查询员工工资的最大值,最小值,平均值,总和
#2. 查询员工最高工资和最低工资的差距(DIFFERENCE)
#3. 查询部门编号为90的员工个数
4.5 分组函数练习答案
文件名:05SQL_Groupingfunction.sql
下载地址:链接:https://pan.baidu.com/s/1_slO9LaDORqLKIQtbLs3Ww?pwd=ccjz
提取码:ccjz