mysql,连续七天求和
时间: 2023-10-17 22:06:26 浏览: 151
假设有如下表结构:
```sql
CREATE TABLE `sales` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` date NOT NULL,
`amount` decimal(10,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
其中,`date`列存储的是销售日期,`amount`列存储的是销售金额。现在要求出连续七天的销售总金额。
可以使用MySQL的窗口函数来实现这个功能。具体的SQL语句如下:
```sql
SELECT date, amount,
SUM(amount) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS sum_7_days
FROM sales;
```
这个SQL语句中,`SUM(amount) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)`表示按照日期顺序,计算当前行及其前面6行的销售金额之和。这个语句使用了MySQL的窗口函数`SUM()`和窗口定义`ROWS BETWEEN 6 PRECEDING AND CURRENT ROW`。
执行这个SQL语句,可以得到如下结果:
```
+------------+--------+-------------+
| date | amount | sum_7_days |
+------------+--------+-------------+
| 2021-01-01 | 100.00 | 100.00 |
| 2021-01-02 | 200.00 | 300.00 |
| 2021-01-03 | 150.00 | 450.00 |
| 2021-01-04 | 300.00 | 700.00 |
| 2021-01-05 | 250.00 | 950.00 |
| 2021-01-06 | 180.00 | 1080.00 |
| 2021-01-07 | 120.00 | 1080.00 |
| 2021-01-08 | 220.00 | 1080.00 |
| 2021-01-09 | 280.00 | 1080.00 |
| 2021-01-10 | 150.00 | 1080.00 |
+------------+--------+-------------+
```
可以看到,最后一列`sum_7_days`表示的是当前行及其前面连续七天的销售总金额。如果某一天前面不足七天,则只计算前面的天数。
阅读全文