SQL面试题更新 2026-08-03

请解释SQL中窗口函数的基本概念,并对比其与普通聚合函数在计算方式和使用场景上的主要不同点。

考察说明

考查对SQL窗口函数核心概念的理解及其与聚合函数的辨析能力。

回答思路

  1. 【回答框架 1】窗口函数是在不改变结果集行数的情况下,对每一行数据基于一个窗口范围进行计算,它通过OVER子句定义分区和排序规则。
  2. 【回答框架 2】聚合函数如SUM、AVG、COUNT等用于对一组行进行汇总,通常会将多行聚合成一行输出。
  3. 【回答框架 3】窗口函数与聚合函数的主要区别在于结果集的行数:窗口函数保留每个原始行,并为每行附加计算值;聚合函数在分组后每组通常只返回一行。
  4. 【回答框架 4】窗口函数常用于排名(如ROW_NUMBER)、移动平均、同比环比等场景,而聚合函数常用于统计报表和汇总分析。
  5. 【回答框架 5】在实际使用中,窗口函数可以在同一查询中与聚合函数结合,实现更复杂的分析需求,例如计算分组内的累计值。
  6. 【关键点 1】窗口函数使用OVER子句定义窗口,聚合函数通常配合GROUP BY使用。
  7. 【关键点 2】窗口函数不减少结果集行数,聚合函数会减少行数。
  8. 【关键点 3】窗口函数支持排名、滞后、移动计算等,聚合函数主要做分组汇总。
  9. 【易错点 1】不要混淆窗口函数中的聚合函数与普通聚合函数,前者保留每行,后者输出汇总行。
  10. 【易错点 2】窗口函数中ORDER BY影响计算顺序,不指定时默认全部分区为一组。
  11. 【易错点 3】窗口函数在部分数据库中有严格的语法限制,注意不同数据库的差异。