【MySQL】MySQL基础06 — SQL学习 — DQL — 常见函数 — 分组函数(转载请注明出处)

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/11Xqwc9F7W3SZwaRH_8sFhA?pwd=ccjz
提取码:ccjz

posted @ 2023-04-08 18:40  陈景中  阅读(9)  评论(0编辑  收藏  举报