我想要一个查询,可以给出结果与过去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;
谢谢!
答案 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
列已编入索引,此查询也应该相对较快。