之前说过,MySQL有很多内置函数可以使用,今天就来更多的了解以下。
MAX(),查询最大值;MIN(),最小值;AVG(),平均值;SUM(),和;COUNT(),计数等等。
括号里可以输入数字或日期,数学表达式等等。
值得注意的是,这些函数只会处理非缺失值数据。这有时会产生影响,比如COUNT()函数若输入某一列,如果碰到缺失值,会造成查询到的数量变少,这时使用COUNT(*)比较好
COUNT()函数有时还会碰到重复数据进行重复计数,若只想计算有区分的数据数,需要加入DISTINCT关键字,如图:
![e7c83ef2b18cfbc92225d7688ab6a9bd.png](https://img-blog.csdnimg.cn/img_convert/e7c83ef2b18cfbc92225d7688ab6a9bd.png)
当没有加DISTINCT关键字时,计数得17个,当加个关键字时,计数变为4个,因为只有4个clients进行了支票活动。
![82bfdbe04374c5d343186c99f30fc418.png](https://img-blog.csdnimg.cn/img_convert/82bfdbe04374c5d343186c99f30fc418.png)
当我们读出了总的数据后想要分组,需要用到GROUP BY指令,比如上述SUM()函数,如果我们想要按client_id进行加总,加一个GROUP BY即可,如图:
![c51b02344c077b5d7e0f0c28a3e0c9a2.png](https://img-blog.csdnimg.cn/img_convert/c51b02344c077b5d7e0f0c28a3e0c9a2.png)
接下来,如果在分组后,还想要进行条件筛选,需要用到HAVING指令,如图:
![ee0d6e0a3a2431e686da7760fa2c8457.png](https://img-blog.csdnimg.cn/img_convert/ee0d6e0a3a2431e686da7760fa2c8457.png)
用HAVING指令筛选出了total_num大于500的组。HAVING类似WHERE,但它只能用在分组之后,并且只能用SELECT选中的关键字,而WHERE写在分组之前,并且可以跟任何表中的列名称。
GROUP BY 指令后还可以加一个非常有用的WITH ROLLUP指令, 属于MySQL独有的指令,在其他SQL系统中不能使用。他可以呈现所有组的总值。如图所示:
![951b6858fe0f17b561ce749b1388bee2.png](https://img-blog.csdnimg.cn/img_convert/951b6858fe0f17b561ce749b1388bee2.png)
有趣的是,如果按两个条件分组,WITH ROLLUP会分层次的给出总值结果。