自学内容网 自学内容网

MySQL【知识改变命运】07

1:Group by 分组查询

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

1.1:语法:

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回顾:

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

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 :⽇期函数

在这里插入图片描述
字符串处理函数函数
数学函数
其他常⽤函数


原文地址:https://blog.csdn.net/2402_84062064/article/details/142969119

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!