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 教程。