SQL中窗口函数,一种在查询语句中经常用到的重要工具,帮助我们在结果集中为每一行计算聚合值或分析函数值,而无需分组或进行子查询。窗口函数与over子句结合,定义窗口大小、位置和排序方式,从而实现复杂的数据分析。在使用窗口函数时,我们通常通过partition by子句对数据进行分组,或在order by子句中指定排序规则。常见窗口函数包括:row_number():为查询结果集中的每一行分配唯一行号,根据窗口定义的顺序计算。rank():计算查询结果集中的行排名,对相同值分配相同排名,提供有序但不唯一行号。dense_rank():计算密集排名,相同排序值的行分配相同密集排名,忽略重复排名。percent_rank():为查询结果集中的每一行计算百分比排名值,表示在数据集中的位置,范围从0到1。first_value():访问窗口中的第一行数据,指定列和排序规则,按默认或自定义排序。last_value():访问窗口中的最后一行数据,类似first_value()但获取最后一行。sum():计算窗口内数据的总和。avg():计算窗口内数据的平均值。count():计算与当前字段相关的行数。以上窗口函数在SQL语句中扮演关键角色,通过实操可以更深入理解它们的用法。例如,通过员工表查询,我们可以按照部门对员工薪资进行排序,计算部门内薪资的百分比排名,或找出每个部门最早和最晚入职的员工薪资,计算部门的平均薪资和薪资总和,以及统计不同部门的员工数量。