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

写在前面的话:

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

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

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

// SQL查询书写顺序

select

from

join

on

where

group by

having

order by

limit

```

但是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语句有所帮助~

你可能感兴趣的:(数据分析师必备技能之SQL(1) -- 逻辑顺序和执行顺序)