SQL 窗口函数是一种在 SQL 查询中计算结果集内某一行的值与其他行的值的函数。它们通常用于执行聚合或计算,但与传统的聚合函数不同的是,窗口函数允许你计算结果集内的每一行,同时保留行级的详细信息。

窗口函数的特点

  • 部分聚合:窗口函数可以对查询结果集的部分行进行聚合计算,而不是对整个结果集进行聚合。
  • 独立排序:窗口函数可以在进行计算的同时,独立于查询的其他部分对结果集进行排序。
  • 每行结果:窗口函数的每个计算结果都与查询结果集的每行相关联。

常用的窗口函数

  • ROW_NUMBER():为查询结果集中的每一行分配一个唯一的顺序号。
  • RANK()DENSE_RANK():为查询结果集中的每一行分配一个排名,处理并列排名时有所不同。
  • NTILE():将查询结果集中的行分配到指定的分组数量中。

示例

假设我们有一个订单表 orders,包含订单编号 order_id、订单金额 amount 和订单日期 order_date

SELECT order_id, amount, 
       ROW_NUMBER() OVER (ORDER BY amount DESC) AS 'row_num'
FROM orders;

这个查询将按金额降序对订单进行排序,并为每个订单分配一个唯一的顺序号。

深入学习

要深入了解 SQL 窗口函数,请访问本站 SQL 教程

SQL 窗口函数示例图