SQL 面试题 目录

SQL 中常用的窗口函数有哪些 (如:ROW_NUMBER, RANK, DENSE_RANK, NTILE, LAG, LEAD)?

推荐答案

SQL 中常用的窗口函数包括:

  • ROW_NUMBER(): 为每一行分配一个唯一的序号,从1开始。
  • RANK(): 为每一行分配一个排名,相同的值会有相同的排名,后续排名会跳过。
  • DENSE_RANK(): 类似于 RANK(),但不会跳过后续排名。
  • NTILE(n): 将结果集分成 n 个桶,并为每一行分配一个桶号。
  • LAG(column, offset, default): 返回当前行之前的某一行的值,offset 指定向前偏移的行数,default 为默认值。
  • LEAD(column, offset, default): 返回当前行之后的某一行的值,offset 指定向后偏移的行数,default 为默认值。

本题详细解读

ROW_NUMBER()

ROW_NUMBER() 函数为每一行分配一个唯一的序号,通常用于生成行号或分页查询。例如:

RANK()

RANK() 函数为每一行分配一个排名,相同的值会有相同的排名,后续排名会跳过。例如:

DENSE_RANK()

DENSE_RANK() 函数类似于 RANK(),但不会跳过后续排名。例如:

NTILE(n)

NTILE(n) 函数将结果集分成 n 个桶,并为每一行分配一个桶号。例如:

LAG(column, offset, default)

LAG() 函数返回当前行之前的某一行的值。offset 指定向前偏移的行数,default 为默认值。例如:

LEAD(column, offset, default)

LEAD() 函数返回当前行之后的某一行的值。offset 指定向后偏移的行数,default 为默认值。例如:

纠错
反馈