首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尾随和查询

尾随和查询
EN

Stack Overflow用户
提问于 2011-03-02 04:44:23
回答 2查看 603关注 0票数 2

我希望总结日期,并需要找到一种方法来做一个3天的尾随和,当前日期和前2天的总和。我使用的是MariaDB,一个MYSQL fork。

下面是数据的一个子集;

代码语言:javascript
复制
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 |
+------------+--------+

我想要得到一个类似下面这样的结果:

代码语言:javascript
复制
+------------+--------+-----------+
| 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,或者在前几天不存在的情况下将其留空。如有任何想法或建议,我们将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-02 05:13:01

一种使用MySQL变量的快速方法

示例表:

代码语言:javascript
复制
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);

查询:

代码语言:javascript
复制
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列)

票数 2
EN

Stack Overflow用户

发布于 2011-03-02 04:48:47

一种简单的方法是将表连接到自身。确保在日期和总计的组合上对其进行索引。

代码语言:javascript
复制
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)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5160120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档