ROWS BETWEEN ... AND ...是 SQL 窗口函数中的一个子句,用于定义窗口函数操作的行范围。窗口函数允许用户对一组相关的记录执行计算,这些记录被称为窗口。
基本语法
<窗口函数> OVER (  [PARTITION BY <列名>]  ORDER BY <列名> [ASC | DESC]  [ROWS BETWEEN <开始位置> AND <结束位置>]  
)
PARTITION BY:可选,用于将数据分成多个窗口或分区。
ORDER BY:指定窗口内数据的排序方式。
ROWS BETWEEN ... AND ...:指定窗口的起始行和结束行
ROWS BETWEEN 的选项
UNBOUNDED PRECEDING:从分区的第一行开始。
1 preceding 前1行
1 following 后1行
N PRECEDING:从当前行的前 N 行开始。
CURRENT ROW:当前行。
N FOLLOWING:从当前行的后 N 行开始。
UNBOUNDED FOLLOWING:从分区的最后一行开始(这在实际应用中很少使用,因为这会包括分区中的所有行)。需求实现
计算每个销售日期及其前后各一天的总销售额,有如下的 sales 表:
CREATE TABLE sales (  sale_date DATE,  amount DECIMAL(10, 2)  
);  INSERT INTO sales (sale_date, amount) VALUES  
('2023-01-01', 100),  
('2023-01-02', 150),  
('2023-01-03', 200),  
('2023-01-04', 120),  
('2023-01-05', 80);hsql实现
SELECT  sale_date,  amount,  SUM(amount) OVER (  ORDER BY sale_date  ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING  ) AS rolling_3_day_total  
FROM  sales;输出结果
