Skip to content

Commit

Permalink
update sql docs
Browse files Browse the repository at this point in the history
  • Loading branch information
fengzhao committed Nov 8, 2023
1 parent bcc81f6 commit 07103a9
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion docs/basic/4.sql.md
Original file line number Diff line number Diff line change
Expand Up @@ -930,6 +930,8 @@ select user_name,dept_name from students left outer join dept on user.id = dep

[参考](https://www.cnblogs.com/youzhibing/p/11516154.html)

[参考2](https://www.cnblogs.com/weix-l/p/7521278.html)

```SQL

-- 查询每个系的平均工资(系名,平均工资)
Expand Down Expand Up @@ -1558,11 +1560,17 @@ END
## 窗口函数
窗口函数(Window Function),又被叫做分析函数(Analytics Function),通常在需要对数据进行分组汇总计算时使用,因此与聚合函数有一定的相似性。但与聚合函数不同的是,聚合函数通过对数据进行分组,仅能够输出分组汇总结果,而原始数据则无法展现在结果中。而窗口函数则可以同时将原始数据和聚集分析结果同时显示出来。
通常情况下,SQL操作数据是基于同行 (row) 或者同列(column)的。无论是where条件还是还是函数聚合,默认都是同一行的不同列,或者是同一列的不同行进行。而现实的数据分析需求很大一部分都是要基于"前因后果"的,因此在数据整合的操作过程中,就无法避免要面对"位移"的逻辑处理,所谓位移就是参考点和观察点的偏移量。比如,我们在做留存分析时,通常会非常关注日注册用户的留存率,例如1-7日留存率(如下表),也就是用户注册后过1天、2天....到第7天里,每一天还剩多少比例的活跃(即有过登录或浏览)用户量。
窗口函数,也叫OLAP函数(Online Anallytical Processing,联机分析处理),可以对数据库数据进行实时分析处理。
这种类型的统计在数据分析非常普遍,如果用寻常的SQL语句实现起来非常冗长反复,相似的步骤重复多次才能实现,无论是脚本编写还是脚本的运行都耗时耗力。此时想必很多人就想考虑用其他办法来实现数据的整合,比如用python程序迭代,而即便如此,且不说时效,就过程而言显得就不那么流畅了(相当于要维护两套系统),而过程的流畅性对后期的数据报表修改和维护是多么的重要,但凡经历过的数据分析师都懂!而窗口函数就是专门解决这类问题,虽然窗口函数很吃内存,在时效上感觉提升不是太大,但是脚本的简洁度、过程流畅性,几乎说是完美。
这种类型的统计在数据分析非常普遍,如果用寻常的SQL语句实现起来非常冗长反复,相似的步骤重复多次才能实现,无论是脚本编写还是脚本的运行都耗时耗力。此时想必很多人就想考虑用其他办法来实现数据的整合,比如用python程序迭代,而即便如此,且不说时效,就过程而言显得就不那么流畅了(相当于要维护两套系统),而过程的流畅性对后期的数据报表修改和维护是多么的重要,但凡经历过的数据分析师都懂!而窗口函数就是专门解决这类问题,虽然窗口函数很吃内存,在时效上感觉提升不是太大,但是脚本的简洁度、过程流畅性,几乎说是完美。

0 comments on commit 07103a9

Please sign in to comment.