1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 数据库学习之MySQL (十一)—— 统计函数 COUNT MIN MAX AVG SUM

数据库学习之MySQL (十一)—— 统计函数 COUNT MIN MAX AVG SUM

时间:2020-04-25 20:23:45

相关推荐

数据库学习之MySQL (十一)—— 统计函数 COUNT MIN MAX AVG SUM

MySQL学习专栏 正在持续更新中:)

文章目录

总表 统计函数NULL是否影响SUM AVG的计算?MAX MIN 用在日期时间上会怎么样这些函数用在字符串上会怎么样结合上节文章案例 统计一波DISTINCT 关键字的应用COUNT 花式应用预告

总表 统计函数

NULL是否影响SUM AVG的计算?

不影响,SUM AVG内部实现了COUNT的功能。

MAX MIN 用在日期时间上会怎么样

会将时间离得更近的认为更大(因为数值大)

这些函数用在字符串上会怎么样

除了COUNT(),当然一般是不推荐的。

硬要说的话,

SUM AVG得凉,硬要放进去 就会返回没有意义的值如 0。

MIN MAX 会采用字符串排序 (STRCMP())

结合上节文章案例 统计一波

上期文章传送门:数据库学习之MySQL (十)—— 日期和时间函数 流程控制函数

上面表格的数据,统计后的结果如下:

USE data1;SELECT MAX(`hiredate`) 最近入职时间,MIN(`hiredate`) 最老入职时间,SUM(`salary`) 最终工资总数,AVG(`salary`) 最终工资总数平均,CASEWHEN YEAR(`hiredate`) < 1996 THEN `salary` * (1+0.6+IFNULL(`commission_pct`, 0)) WHEN YEAR(`hiredate`) BETWEEN 1997 AND 2000 THEN `salary` * (1+0.4+IFNULL(`commission_pct`, 0)) WHEN YEAR(`hiredate`) BETWEEN 2001 AND THEN `salary` * (1+0.2+IFNULL(`commission_pct`, 0))WHEN YEAR(`hiredate`) BETWEEN AND THEN `salary` * (1+0.1+IFNULL(`commission_pct`, 0))ELSE `salary` * (1+0.0+IFNULL(`commission_pct`, 0))END AS 最终工资 FROMemployees ORDER BY 最终工资 DESC ;

DISTINCT 关键字的应用

案例我们想知道奖金率有多少种,而且具体每种的值是什么?

第一要去NULL 第二 去重 第三 最好来个降序排序查询

SELECTDISTINCT IFNULL(`commission_pct`, 0) 奖金率种类FROM employeesORDER BY 奖金率种类 DESC;SELECTCOUNT(DISTINCT `commission_pct`) 奖金率种数FROM employees;

COUNT 花式应用

最主要的就是用来统计类的实例数量(有多少行),当然要求你实例的属性(列对应得值)至少得有个不为NULL(全是NULL 实例不存在了)

于是我们可以这么写

SELECT COUNT(*) FROM employees;

这种写法无论是MySQL 5.5之前的存储引擎MYISAM 还是5.5之后的INNODB 都是最快、效率最高的统计行数办法。

当然你也可以这么写:

SELECT COUNT('杰伦') FROM employees;

或者

SELECT COUNT(1234) FROM employees;

结果相同,它实现原理是每一行都多一个属性,叫1234 或者 ‘杰伦’ (你自定义的),然后统计有多少个1234或者’杰伦’ 达到一样的行数统计效果。

预告

其实单纯的统计函数意义不大——我们不太可能针对一张张表来统计

经常是对id = 1,2,3…的所有情况统计

这时 我们就需要分组 GROUP BY

下一站:数据库学习之MySQL (十二)—— 分组查询 GROUP BY + HAVING

本文专栏

MySQL专栏我的其他专栏 希望能够帮到你 ( •̀ ω •́ )✧ 手把手带你学后端(服务端)python这么火 想要深入学习python 玩一下简单的应用嘛?

python应用 谢谢大佬支持! 萌新有礼了:)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。