admin管理员组

文章数量:1794759

MySQL【知识改变命运】07

1:Group by 分组查询

可以根据某列,进行分组查询,比如学校里面的人,就可以以职位可以分为学生,老师两组 ,然后用聚合函数对分组进行统计

1.1:语法:

代码语言:javascript代码运行次数:0运行复制
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 ⼦句中,必须包含中聚合函数中

1.2:练习

创建一个表

统计每个⻆⾊的⼈数

以role分为四组,对每组进行统计运算

注意:

分组后:查询列表中的列必须在group by子句中也有,如果否则的话会提示错误,因为显示分组中的那个行的数据都不合适。

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

2:having⼦句

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

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

Having 与Where 的区别 • Having ⽤于对分组结果的条件过滤 • Where ⽤于对表中真实数据的条件过滤

3回顾:

在这里我们已经学完了所有的检索内容;我们在回顾一下:

代码语言:javascript代码运行次数:0运行复制
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}]

3:内置函数

MySQL内部实现好一些函数,可以拿来直接用,但是我们要注意的是,一般对于数据处理的问题,在应用程序中完成,不要放在数据库里面处理。

3.1 :⽇期函数

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-10-16,如有侵权请联系 cloudcommunity@tencent 删除语法mysql函数数据统计

本文标签: MySQL知识改变命运07