我希望总结日期,并需要找到一种方法来做一个3天的尾随和,当前日期和前2天的总和。我使用的是MariaDB,一个MYSQL fork。
下面是数据的一个子集;
select Date, Total from keywordSum limit 5;
+------------+--------+
| Date | Total |
+------------+--------+
| 2010-11-11 | 316815 |
| 2010-11-12 | 735305 |
| 2010-11-13 | 705116 |
| 2010-11-14 | 725020 |
| 2010-11-15 | 745378 |
+------------+--------+我想要得到一个类似下面这样的结果:
+------------+--------+-----------+
| Date | Total | 3DayTotal |
+------------+--------+-----------+
| 2010-11-11 | 316815 | 316815 |
| 2010-11-12 | 735305 | 1052120 |
| 2010-11-13 | 705116 | 1757236 |
| 2010-11-14 | 725020 | 2167441 |
| 2010-11-15 | 745378 | 2177514 |
+------------+--------+-----------+它甚至可以打印NaN,或者在前几天不存在的情况下将其留空。如有任何想法或建议,我们将不胜感激。
发布于 2011-03-02 05:13:01
一种使用MySQL变量的快速方法
示例表:
create table keywordsum (date datetime, total int);
insert keywordsum values
('2010-11-11',316815),
('2010-11-12',735305),
('2010-11-13',705116),
('2010-11-14',725020),
('2010-11-15',745378);查询:
select
k.date, k.total, k.total + ifnull(@d1,0) + ifnull(@d2,0) running_total,
@d2 := @d1,
@d1 := k.total
from (select @d1 := null, @d2 := null) vars
cross join keywordsum k
order by k.date(您始终可以选择此选项,以仅获取前3列)
发布于 2011-03-02 04:48:47
一种简单的方法是将表连接到自身。确保在日期和总计的组合上对其进行索引。
select t1.date
, t1.total
, t1.total
+coalesce(t2.total,0)
+coalesce(t3.total,0)
from theTable t1
left
join theTable t2 on t1.date = date_Add(t2.date,interval 1 day)
left
join theTable t3 on t1.date = date_Add(t3.date,interval 2 day)https://stackoverflow.com/questions/5160120
复制相似问题