ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL分组函数

2022-01-02 10:58:24  阅读:131  来源: 互联网

标签:salary 函数 MIN employees 分组 MySQL hiredate SUM SELECT


#分组函数 用作统计使用 
/*可以和distinct搭配使用
1、sum
2、avg
3、max min
4‘count
*/#这几个分组函数都忽略null值
SELECT SUM(salary) FROM employees;
SELECT SUM(salary),AVG(salary),MIN(salary),MAX(salary),COUNT(salary) FROM employees;
SELECT SUM(salary),ROUND(AVG(salary),2),MIN(salary),MAX(salary),COUNT(salary) FROM employees;

#参数支持哪些类型
#sum和avg 一般只适用于数值型,忽略null值
SELECT SUM(last_name),AVG(last_name) FROM employees;#不报错,但是无意义
SELECT SUM(commission_pct),AVG(commission_pct),SUM(commission_pct)/35,SUM(commission_pct)/107 FROM employees;
#7.80 0.222857 0.222857 0.072897 可得sum和avg都忽略null值

#max min 可处理任意类型,忽略null值
SELECT MAX(last_name),MIN(hiredate) FROM employees;#字符串可以进行排序,所以有最大最小

#count可支持所有类型,但是忽略null值
SELECT COUNT(last_name) FROM employees;
SELECT COUNT(commission_pct) FROM employees;

#去重
SELECT SUM(DISTINCT salary),SUM(salary) FROM employees;

#count函数 一般使用count(*)
SELECT COUNT(salary) FROM employees;

SELECT COUNT(*) FROM employees; #统计行数

SELECT COUNT(1) FROM employees; #相当于给原有表加了一列,实质上是统计行数 

#效率
/*
myisam存储引擎下,count(*)效率高
innodb存储引擎下,count(*)和count(1)差不多
*/

#和分组函数一起查询的字段有限制,分组查询的结果是一行
#和分组函数一起查询的字段要求是 group by后的字段
SELECT AVG(salary),employee_id FROM employees;#不会报错但是无意义
 
#测试
#查询公司员工工资的最大值、最小值、平均值、总和
SELECT MAX(salary),MIN(salary),AVG(salary),SUM(salary) FROM employees;

#查询员工表中的最大入职时间和最小入职时间相差的天数
SELECT (YEAR(MAX(hiredate))-YEAR(MIN(hiredate)))*365
+(MONTH(MAX(hiredate))-MONTH(MIN(hiredate)))*30
+(DAY(MAX(hiredate))-DAY(MIN(hiredate))) AS DIFFRENCE
FROM employees;
#函数datediff()计算两天之差
SELECT DATEDIFF(MAX(hiredate),MIN(hiredate)) AS DIFFRENCE FROM employees;

SELECT DATEDIFF(NOW(),'2000-03-03');

#查询部门编号为90的员工个数
SELECT COUNT(*) FROM employees WHERE department_id=90;


标签:salary,函数,MIN,employees,分组,MySQL,hiredate,SUM,SELECT
来源: https://blog.csdn.net/weixin_44300779/article/details/122274416

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有