From 07103a9142af2a2582787ff8258c9ebeeef346e1 Mon Sep 17 00:00:00 2001 From: fengzhao Date: Wed, 8 Nov 2023 10:44:16 +0800 Subject: [PATCH] update sql docs --- docs/basic/4.sql.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/basic/4.sql.md b/docs/basic/4.sql.md index 5bdf55df8..821f537f4 100644 --- a/docs/basic/4.sql.md +++ b/docs/basic/4.sql.md @@ -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 -- 查询每个系的平均工资(系名,平均工资) @@ -1558,6 +1560,9 @@ END ## 窗口函数 +窗口函数(Window Function),又被叫做分析函数(Analytics Function),通常在需要对数据进行分组汇总计算时使用,因此与聚合函数有一定的相似性。但与聚合函数不同的是,聚合函数通过对数据进行分组,仅能够输出分组汇总结果,而原始数据则无法展现在结果中。而窗口函数则可以同时将原始数据和聚集分析结果同时显示出来。 + + 通常情况下,SQL操作数据是基于同行 (row) 或者同列(column)的。无论是where条件还是还是函数聚合,默认都是同一行的不同列,或者是同一列的不同行进行。而现实的数据分析需求很大一部分都是要基于"前因后果"的,因此在数据整合的操作过程中,就无法避免要面对"位移"的逻辑处理,所谓位移就是参考点和观察点的偏移量。比如,我们在做留存分析时,通常会非常关注日注册用户的留存率,例如1-7日留存率(如下表),也就是用户注册后过1天、2天....到第7天里,每一天还剩多少比例的活跃(即有过登录或浏览)用户量。 @@ -1565,4 +1570,7 @@ END -这种类型的统计在数据分析非常普遍,如果用寻常的SQL语句实现起来非常冗长反复,相似的步骤重复多次才能实现,无论是脚本编写还是脚本的运行都耗时耗力。此时想必很多人就想考虑用其他办法来实现数据的整合,比如用python程序迭代,而即便如此,且不说时效,就过程而言显得就不那么流畅了(相当于要维护两套系统),而过程的流畅性对后期的数据报表修改和维护是多么的重要,但凡经历过的数据分析师都懂!而窗口函数就是专门解决这类问题,虽然窗口函数很吃内存,在时效上感觉提升不是太大,但是脚本的简洁度、过程流畅性,几乎说是完美。 \ No newline at end of file +这种类型的统计在数据分析非常普遍,如果用寻常的SQL语句实现起来非常冗长反复,相似的步骤重复多次才能实现,无论是脚本编写还是脚本的运行都耗时耗力。此时想必很多人就想考虑用其他办法来实现数据的整合,比如用python程序迭代,而即便如此,且不说时效,就过程而言显得就不那么流畅了(相当于要维护两套系统),而过程的流畅性对后期的数据报表修改和维护是多么的重要,但凡经历过的数据分析师都懂!而窗口函数就是专门解决这类问题,虽然窗口函数很吃内存,在时效上感觉提升不是太大,但是脚本的简洁度、过程流畅性,几乎说是完美。 + + +