当前位置: 首页 > 科技观察

4分钟搞懂什么是SQL窗口函数_0

时间:2023-03-16 20:23:25 科技观察

你可能对简单的SQL查询很熟悉,比如使用SELECTFROMWHEREGROUPBY等基本语句,但如果你想进一步提高你的SQL技能,你必须知道窗函数(WindowFunction),又称为分析函数(AnalyticsFunction)。什么是窗函数/分析函数?窗口函数是SUM()、COUNT()、MAX()等可以返回聚合值的函数。但同样,与普通聚合函数不同,窗口函数不会对结果进行分组,以使输出具有与输入相同的行数。窗口函数分析一个窗口函数大概是这样的:SELECTSUM()OVER(PARTITIONBY___ORDERBY___)FROMTable这里有3点要记住:1.聚合函数:在上面的例子中,我们使用了SUM(),但是你也可以使用COUNT(),AVG()等计算函数2.PARTITIONBY:你只需要把它看成一个GROUPBY子句,但是在窗口函数中,你要写PARTITIONBY3.ORDERBY:在ORDERBY和普通查询中语句ORDERBY也不例外。请注意,应仔细考虑输出的顺序示例:聚合函数VS窗口函数假设我们有下表:如果要按性别获取平均GPA,则可以使用聚合函数并运行以下查询:SELECTGender,AVG(GPA)asavg_gpaFROMstudentsGROUPBYGender结果如下:一步是关键!现在我们想要得到如下结果:当然可以使用刚才提到的聚合函数,然后将结果join到原表中,但这需要两步。但是如果我们使用窗口函数,我们可以一步完成并得到相同的结果:SELECT*,AVG(GPA)OVER(PARTITIONBYGender)asavg_gpaFROMtable通过上面的查询,我们按性别对数据进行分区并计算每个性别的平均值平均绩点。然后它将创建一个名为avg_gpa的新列,并将关联的平均GPA附加到每一行。窗口函数的优点简单的窗口函数更易于使用。在上面的例子中,与使用聚合函数然后合并结果相比,使用窗口函数只需要多一行就可以得到想要的结果。快这一点与上一点有关,使用窗口函数比使用替代方法要快得多。当您处理数百或数千GB的数据时,这非常有用。通用性最重要的是,窗口函数具有多种本文未提及的功能,例如添加移动平均线、添加行号和滞后数据等。结束语看完本文,你大概对窗口函数有了初步的了解。希望本文提到的例子能帮助你理解窗口函数。总而言之,希望你的SQL能越来越好!