【发布时间】:2021-06-10 16:01:26
【问题描述】:
如何在考虑到先前状态的情况下找到两个日期之间的累积和?
设置WHERE 条件
WHERE date BETWEEN '2021-02-19 12:00:00'AND '2021-02-21 12:00:00';
不做这项工作,因为总和从第一个条件的日期开始,而不是从第一条记录开始。我想只选择整个查询的一部分(两个日期之间),但要从第一个(初始)状态计算累积总和。
我准备好了Fiddle
CREATE TABLE `table1` (
`id` int(11) NOT NULL,
`date` datetime NOT NULL DEFAULT current_timestamp(),
`payment` double NOT NULL
);
INSERT INTO `table1` (`id`, `date`, `payment`) VALUES
(1, '2021-02-16 12:00:00', 100),
(2, '2021-02-17 12:00:00', 200),
(3, '2021-02-18 12:00:00', 300),
(4, '2021-02-19 12:00:00', 400),
(5, '2021-02-20 12:00:00', 500),
(6, '2021-02-21 12:00:00', 600),
(7, '2021-02-22 12:00:00', 700);
version();
SELECT DATE_FORMAT(date, "%Y-%m-%d") AS date,
payment, SUM(payment) OVER(ORDER BY id) AS balance
FROM table1
WHERE date BETWEEN '2021-02-19 12:00:00'AND '2021-02-21 12:00:00';
【问题讨论】:
-
您的预期结果是什么?
-
1000, 1500, 2100
标签: mysql sum subquery window-functions