可以根据某列,进行分组查询,比如学校里面的人,就可以以职位可以分为学生,老师两组 ,然后用聚合函数对分组进行统计
SELECT {col_name | expr} ,... ,aggregate_function (aggregate_expr)
FROM table_references
GROUP BY {col_name | expr}, ...
[HAVING where_condition]语法解释: •col_name | expr:要查询的列或表达式,可以有多个,必须在 GROUP BY ⼦句中作为分组依据 • aggregate_function:聚合函数,⽐如COUNT(), SUM(), AVG(), MAX(), MIN() • aggregate_expr:聚合函数传⼊的列或表达式,如果列或表达式不在 GOURP BY ⼦句中,必须包含中聚合函数中
创建一个表

统计每个⻆⾊的⼈数

以role分为四组,对每组进行统计运算
注意:
分组后:查询列表中的列必须在group by子句中也有,如果否则的话会提示错误,因为显示分组中的那个行的数据都不合适。


统计每个⻆⾊的平均⼯资,最⾼⼯资,最低⼯资


找到平均工资大于1万的角色 这个我们如何编写?

这道题思路我们应该先以角色分组,然后计算平均成绩,然后把工资大于1w的角色筛选出来。 这时候就会出现问题,where筛选在分组之前已经执行过了,这样就无法实现上述的效果,那如何解决呢? 使⽤GROUP BY 对结果进⾏分组处理之后,对分组的结果进⾏过滤时,不能使⽤ WHERE ⼦句,⽽要使⽤ HAVING ⼦句

Having 与Where 的区别 • Having ⽤于对分组结果的条件过滤 • Where ⽤于对表中真实数据的条件过滤
在这里我们已经学完了所有的检索内容;我们在回顾一下:
SELECT
[DISTINCT]
select_expr [, select_expr] ...
[FROM table_references]
[WHERE where_condition]
[GROUP BY {col_name | expr}, ...]
[HAVING where_condition]
[ORDER BY {col_name | expr } [ASC | DESC], ... ]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]MySQL内部实现好一些函数,可以拿来直接用,但是我们要注意的是,一般对于数据处理的问题,在应用程序中完成,不要放在数据库里面处理。

字符串处理函数函数 数学函数 其他常⽤函数