SQL的执行顺序与聚集函数

本文参考:https://blog.csdn.net/anguowei/article/details/78391161
一、SQL SELECT语句的执行顺序:
1.from子句组装来自不同数据源的数据;
2.where子句基于指定的条件对记录行进行筛选;
3.group by子句将数据划分为多个分组;
4.使用聚集函数进行计算;
5.使用having子句筛选分组;
6.计算所有的表达式;
7.使用order by对结果集进行排序;
8.select 集合输出。

注:如果使用了连接join和on,则会在where执行之前先执行on,然后执行join,接着才去执行where

举个例子:

select 考生姓名, max(总成绩) as max总成绩
from tb_name
where 考生姓名 is not null
group by 考生姓名
having max(总成绩) > 600
order by max总成绩

在上面的示例中 SQL 语句的执行顺序如下:
1.首先执行 FROM 子句, 从 tb_name 表组装数据源的数据
2.执行 WHERE 子句, 筛选 tb_name 表中所有数据不为 NULL 的数据
3.执行 GROUP BY 子句, 把 tb_name 表按 “学生姓名” 列进行分组
4.计算 max() 聚集函数, 按 “总成绩” 求出总成绩中最大的一些数值
5.执行 HAVING 子句, 筛选课程的总成绩大于 600 分的.
6.执行 ORDER BY 子句, 把最后的结果按 “Max 成绩” 进行排序

二、MySQL中的聚集函数
1、count()返回某列的行数
2、avg()返回某列的平均值
3、max()返回某列的最大值
4、min()返回某列的最小值
5、sum()返回某列的和
6、distinct 去除重复值
注:avg()忽略值为null的行,count(*)时统计所有行,count(列)时忽略为null的行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章