SQL OVER 函数用于对分组数据计算累积值、移动平均值和其他统计信息。它按分组表达式分区,按排序表达式计算值顺序,并按范围、行数或组数确定聚合范围。常见用途包括计算累积值、创建移动平均值和对行集进行排名。

SQL 中 OVER 函数的作用
OVER 函数主要用于在分组数据中计算累积值、移动平均值或其他统计信息。它允许您对行集进行操作,并根据前面的行或当前行计算结果。
用途
OVER 函数最常见的用途包括:
- 累积值:它可以计算指定范围内的值之和、平均值或其他聚合函数。例如,您可以计算某个产品在过去几天的销量总和。
- 移动平均:它可以通过计算指定窗口内值的平均值来创建平滑的数据。这对于分析时间序列数据(例如股票价格)非常有用。
- 排名:它可以对行集进行排名,以标识特定标准下表现最好的或最差的行。例如,您可以对员工按销售额进行排名。
语法
自从百度屏蔽淘宝客网站、淘宝抛弃淘宝客之后,个人站长集体陷入了恐慌之中。此时,什么值得买网的异军突起引起了广大个人站长的极大关注。做一个什么值得买一样的导购网站成了众多个人站长的一致心愿! TP-COUPON 导购系统 即是让个人站长实现此心愿的绝佳选择! 欢迎个人站长选用。V1.1版 更新记录:1.修正请求时查询淘宝店铺错误的bug2.删除一些无用的代码
OVER 函数的语法如下:
OVER (PARTITION BY partition_expression
ORDER BY order_expression
[RANGE {BETWEEN bound AND bound} | ROWS {BETWEEN bound AND bound} | GROUPS {BETWEEN bound AND bound}])- PARTITION BY:指定将数据划分为不同组的分组表达式。
- ORDER BY:指定用于计算值顺序的排序表达式。
- RANGE/ROWS/GROUPS BY:指定用于确定聚合范围的范围、行数或组数。
示例
-- 计算过去 7 天内产品的总销量 SELECT product_id, SUM(quantity) OVER (PARTITION BY product_id ORDER BY sale_date RANGE INTERVAL '7 days' PRECEDING) AS total_sales FROM sales GROUP BY product_id; -- 创建过去 5 天的移动平均销售额 SELECT product_id, AVG(quantity) OVER (PARTITION BY product_id ORDER BY sale_date ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS moving_average FROM sales GROUP BY product_id; -- 对员工按销售额进行排名 SELECT employee_id, sales_amount, RANK() OVER (ORDER BY sales_amount DESC) AS rank FROM employees_sales;
总之,OVER 函数是一种强大的工具,用于从分组数据中提取有意义的信息。它使您能够计算累积值、移动平均值和排名,从而帮助您深入了解数据并做出明智的决策。









