数据分析师必备技能之SQL(1) -- 逻辑顺序和执行顺序

数据分析师必备技能之SQL(1) – 逻辑顺序和执行顺序

写在前面的话:
SQL是数据分析师必备的数据处理、分析工具,本系列会分享一些自己的实战经验,致力于为各位同行者提供建议,避免踩坑!

第一部分,先来讨论一个很容易被忽略,也很重要的问题:SQL的书写顺序和执行顺序。

以下是常见的SQL语句的查询书写顺序:

// SQL查询书写顺序
select <select_list>
from <table_name>
<join_type> join <join_table> 
on <join_condition>
where <where_condition>
group by <group_by_list>
having <having_condition>
order by <order_by_condition>
limit <limt_number>
```

但是SQL实际执行过程中,每一步都是通过产生一个虚拟表,保存执行结果;如果某一个子句缺失,则跳过。
以下才是SQL实际的执行顺序

// **SQL实际执行顺序**
from 加载,进行表的查找和加载
on 关联字段
join 关联表
where 过滤
group by 分组
avg、sum...(聚合函数)
having 过滤
select 字段
distinct 去重
order by 排序
limit 限制输出数量
```

例如:查询平均成绩大于60分的同学的学号和平均成绩;
如果忽略了SQL的实际执行顺序,很容易写成:

select id
	,avg(score) as avg_score
from sc
group by id
having avg_score > 60
;

但是select的执行顺序应该是在avg聚合函数之后的,所以正确的写法是:

select id
	,avg(score) as avg_score
from sc
group by id
having avg(score) > 60
;

这是SQL很重要的语法,但也很容易被忽略,希望对大家今后编写SQL语句有所帮助~

猜你喜欢

转载自blog.csdn.net/fileszu/article/details/107917145
今日推荐