sql中over函数是做什么用的-SQL
SQL 中 OVER 函数的作用
OVER 函数主要用于在分组数据中计算累积值、移动平均值或其他统计信息。它允许您对行集进行操作,并根据前面的行或当前行计算结果。
用途
OVER 函数最常见的用途包括:
- 累积值:它可以计算指定范围内的值之和、平均值或其他聚合函数。例如,您可以计算某个产品在过去几天的销量总和。
- 移动平均:它可以通过计算指定窗口内值的平均值来创建平滑的数据。这对于分析时间序列数据(例如股票价格)非常有用。
- 排名:它可以对行集进行排名,以标识特定标准下表现最好的或最差的行。例如,您可以对员工按销售额进行排名。
语法
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 函数是一种强大的工具,用于从分组数据中提取有意义的信息。它使您能够计算累积值、移动平均值和排名,从而帮助您深入了解数据并做出明智的决策。