组函数:
定义:组函数(分组函数),是指将数据按照某列的值进行分组后,然后使用组函数分别对每个分好的小组中的数据进行处理。
所以组函数一般要结合着分组关键字group来使用
group by:在查询表中数据的时候进行分组的关键字
having:分组之后的进行进一步数据筛选的关键字
having和where的功能类似
使用组函数:不结合group分组使用
注:如果不使用group分组的话,那么默认当前查询到的所有数据是一组
组函数:
avg: 求平均值
count: 计算有多少条数据
max: 最大值
min: 最小值
sum: 求和
stddev: 标准差
variance: 方差
sql语句的各部分构成:
select ....
from ....
where ....
group by ...
having ...
order by ....
注:除了select和from之外其他的都不是必须的。
假如select..from..后面的语句都出现了,那么他们的执行顺序为:
where-->
group by分组-->
执行组函数-->
having筛选->
order by
组函数出现的位置:
1.select后面
2.having后面
3.order by后面
4.where后面一定【不能】出现组函数
注意:如果select/having语句后面出现了组函数,那么select/having后面没有被组函数修饰的列,就必须出现在group by 后面
where和having对比:
1.where和having都是做条件筛选的
2.where执行的时间比having要早
3.where后面不能出现组函数
4.having后面可以出现组函数
5.where语句要紧跟from后面
6.having语句要紧跟group by后面
group by和having的关系:
1.group by可以单独存在,后面可以不出现having语句
2.having不能单独存在,有需要的话,必须出现在group by后面
order by语句
1.如果sql语句中需要排序,那么就一定要写在sql语句的最后面
2.order by后也可以出现组函数
子查询(嵌套查询):
定义:子查询,即一个select语句中嵌套了另外的一个或者多个select语句
注意:(可以把子查询的结果作为一张表来使用)