窗口函数和聚合函数在SQL查询中扮演着不同的角色,它们的主要区别在于处理数据的方式和返回的结果。12
-
聚合函数是将多条记录聚合为一条数据。它们通常用于对一组值进行计算,并返回计算后的单个值。聚合函数包括求和(SUM)、求平均数(AVG)、求最大值(MAX)、求最小值(MIN)以及计数(COUNT)等。聚合函数的结果是对一组数据进行汇总后的单一输出,且除了COUNT外,聚合函数会忽略空值。聚合函数经常与SELECT语句的GROUP BY子句一同使用,以按指定的列对数据进行分组后进行聚合计算。
-
窗口函数则是每条记录都会执行,有多少条数据还会返回多少条数据。窗口函数兼具分组和排序的两种功能,但不具备汇总功能。窗口函数可以在原表上增加字段,并在新字段上显示结果,为每一行数据都返回一个结果。窗口函数不会改变原始数据的行数,而是在每行数据上应用计算或排名等操作。常见的窗口函数包括RANK、DENSE_RANK、ROW_NUMBER等,这些函数用于在分组内进行排名或计算累计值等。
总的来说,聚合函数用于对数据进行汇总,返回单个聚合值;而窗口函数则用于在每行数据上执行计算或排名等操作,返回与原始数据行数相同的结果集。