总结过去7天的数据回顾窗口

时间:2015-07-19 22:11:56

标签: mysql sql

我想要一个查询,可以给出结果与过去7天的总和回顾。

我希望每个日期的输出日期和最近7天回看展示的总和

e.g。我有一个带有以下数据的表tblFactImps:

dateFact    impressions id
2015-07-01  4022        30
2015-07-02  4021        33 
2015-07-03  4011        34  
2015-07-04  4029        35
2015-07-05  1023        39
2015-07-06  3023        92
2015-07-07  8027        66
2015-07-08  2024        89  

我需要输出2列:

dateFact    impressions_last_7

查询我得到了:

select  dateFact, sum(if(datediff(curdate(), dateFact)<=7, impressions,0)) impressions_last_7 from  tblFactImps group by  dateFact;

谢谢!

2 个答案:

答案 0 :(得分:1)

如果你的事实表不是太大,那么相关的子查询是一种简单的方法来做你想要的事情:

select i.dateFact,
       (select sum(i2.impressions)
        from tblFactImps i2
        where i2.dateFact >= i.dateFact - interval 6 day
       ) as impressions_last_7
from tblFactImps i;

答案 1 :(得分:1)

您可以通过LEFT OUTER JOIN在日期范围内自己创建表格,然后将按日期分组的展示次数汇总,如下所示:

SELECT
    t1.dateFact,
    SUM(t2.impressions) AS impressions_last_7
FROM
    tblFactImps t1
LEFT OUTER JOIN
    tblFactImps t2
ON
    t2.dateFact BETWEEN
        DATE_SUB(t1.dateFact, INTERVAL 6 DAY)
        AND t1.dateFact
GROUP BY
    t1.dateFact;

这可以为您提供表格中每个日期的7天滑动金额。

假设您的dateFact列已编入索引,此查询也应该相对较快。