常见函数之分组函数

1.功能:用作统计使用,又称为聚合函数,统计函数,组函数;

分类:常见的函数有;sum求和、avg平均值、max最大值、min最小值、count计算个数

特点:(1)sum/avg一般用于处理数值型;

(2)Max/min/count可以处理任何类型;

  1. Sum/avg/max/min/count都忽略null值;
  2. 可以和distinct搭配实现去重的运算;
  3. 一般使用count(*)用做统计行数;
  4. 和分组函数一同查询的字段,要求是grounp by后的字段

2、简单的用

Select sum(salary) from employees;单个使用;

Select sum(salary) 和,avg(salary) 平均 ,max(salary) 最高,min(salary) 最低,count(salary) 个数 from employees;   一起用;

Select sum(salary) 和,round(avg(salary),2) 平均 ,max(salary) 最高,min(salary) 最低,count(salary) 个数 from employees;   一起用;

3、参数支持类型

Select sum(last_name) ,avg(last_name)from employees; 不建议,不是错,但不可以,没意义;

Select max(last_name) ,min(last_name)from employees;支持的

是否忽略null

Select sum(commission_pct) ,avg(commission_pct)from employees;查看奖金,结果忽略null值;

Select min(commission_pct) ,max(commission_pct)from employees;结果忽略null值;

Select count(commission_pct)from employees;结果忽略null值;

distinct的搭配

Select sum(distinct salary) ,sum( salary) from employees;

Select count(distinct salary),count(salary)from employees;

结果显示可以实现去重的运算;

count函数的详细介绍

Select count(*) from employees; 统计行数;

Select count(1) from employees;

效率:

MYISAM存储引擎下,count(*)的效率高;

INNODB存储引擎下,count(*)和count(1)的效果差不多,比count(字段)要高一些;

综上所述,用count(*)比较好;

测试题:

  1. 查询公司员工工资最大,最小,平均值,总和

Select max(salary) mx_sal,min(salary) mi_sal,round(avg(salary),2) ag_sal,sum(salary) sum_sal from employees;

  1. 查询员工表中的最大、最小入职时间相差多少天(diffrence)

Select datediff(‘1993-1-1’,’2022-12-1’);

Select datediff(max(hiredate),min(hiredate)) diffrence from employees;

  1. 查询部门编号为90的员工数量

Select count(*) 个数 from employees where department_id=90;

分组查询

Ground by 子句语法;

Select 分组函数 ,列(要求出现在ground by 的后面)

 from  表

  where[筛选条件]  

ground by[分组的列表]

Orde byr [子句]

查询列表必须特殊,要求是分组函数和group by 后出现的字段;

特点:

1、分组查询分为两类:

                数据源                 位置                   关键字

一个分组前筛选:原始表                 group by 子句的前面    where

一个分组后筛选:分组后的结果集         group by 子句的后面    having

  1. 分组函数做条件肯定是放在having子句中;
  2. 能用分组前筛选,优先考虑分组前筛选;
  1. group by 子句支持单个、多个字段分组(多个字段用逗号隔开,没有顺序要求),表达式或函数(用得较少)
  2. 也可添加排序(排序放在整个分组查询的最后)

例题1:

查询每个工种的最高工资

Select max(salary),job_id from employees group by job_id;

例题2:

查询每个位置上的部门个数

Select count(*),location_id from employees group by location_id ;

难度增加:分组前的筛选

例题3:

查询邮箱中包含a字符的,每个部门的平均工资

Select avg(salary),department_id from employees where email like’%a%’

group by department_id;

例题4:

查询有奖金的每个领导手下员工最高工资是

Select max(salary),manager_id from employees

 where commission_pct is not null

group by manager_id;

复杂的筛选条件:分组后的筛选

例题1:查询那个部门的员工个数大于2

select count(*),department_id

from employees

 group by department_id

Having count(*)>2;

例题2:查询每个工种有奖金的员工的最高工资>12000的工种编号和最高工资

select max(salary),job_id

from employees

Where commission_pct is not null//奖金不为空

 group by job_id

Having  max(salary)>12000;

例题3:领导编号大于102的每个领导手下的最低工资大于5000的领导编号由那些,以及最低工资;

select min(salary),manager_id

from employees

Where manager_id>102

 group by manager_id

Having  min(salary)>5000;

按照表达式或函数分组

例题1:按员工姓名的长度分组,查询每组员工个数,筛选员工个数大于5的

Select count(*) ,length(last_name) len_name from employees  group by length(last_name) having count(*) >5;

按多个字段分组

例题:查询每个部门每个工种的员工平均工资

Select avg(salary) ,department_id,job_id from employees  group by job_id,department_id;

添加排序

例题:查询每个部门每个工种员工平均工资,按平均工资高低排序

Select avg(salary) ,department_id,job_id from employees where department_id is not null  group by job_id,department_id order by avg(salary) desc;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL分组函数是用于对数据进行聚合计算的函数常见分组函数包括SUM、AVG、MIN、MAX和COUNT等。 例如,使用SUM函数可以计算某一列的总和,使用AVG函数可以计算某一列的平均值,使用MIN函数可以找出某一列的最小值,使用MAX函数可以找出某一列的最大值,使用COUNT函数可以计算某一列的非空值数量。 下面是一些使用分组函数的示例: - 查询所有员工的工资总和:SELECT SUM(salary) FROM employees; \[2\] - 查询员工的平均工资:SELECT AVG(salary) FROM employees; \[2\] - 查询员工的最低工资:SELECT MIN(salary) FROM employees; \[2\] - 查询员工的最高工资:SELECT MAX(salary) FROM employees; \[2\] - 查询有工资的员工数:SELECT COUNT(salary) FROM employees; \[2\] 此外,还可以使用分组函数进行更复杂的计算,比如计算最大入职时间和最小入职时间的相差天数: - 查询员工表中的最大入职时间和最小入职时间的相差天数:SELECT DATEDIFF(MAX(hiredate), MIN(hiredate)) 相差天数 FROM employees; \[3\] 通过使用这些分组函数,可以对数据进行聚合计算,从而得到有用的统计信息。 #### 引用[.reference_title] - *1* *2* *3* [MySQL常见函数之——分组函数(sum、avg、count、max、min等)](https://blog.csdn.net/qq_43163943/article/details/108672074)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值