我可以使用以下代码获取每周的总条目。

select week(date_created) as week, count(distinct tag_code) as Total_This_Week
from entries
where date_created between '2000-01-01' and '2020-01-01'
group by week;


但是我需要得到的是total_last_6_weeks列,如下所示,这是前6周的总和,因此对于第6周,total_Last_6_weeks是'370',是通过累加得出的(56 + 45 + 85 + 34 + 85 + 65)。这必须每周发生一次,因此对于第9周,它必须将前6周加起来。我尝试过的所有方法似乎都无效。

+-----+-----------------+--------------------+
| week| Total_This_Week | total_Last_6_Weeks |
+-----+-----------------+--------------------+
|__0__|_______81________|_______ 122________ |
|__1__|_______65________|________188________ |
|__2__|_______85________|________145_________|
|__3__|_______34________|________205_________|
|__4__|_______85________|________189_________|
|__5__|_______45________|________112_________|
|__6__|_______56________|________370_________|
|__7__|_______32________|________518_________|
|__8__|_______34________|________121_________|
|__9__|_______45________|________224_________|
+-----+-----------------+--------------------+

最佳答案

在SQL Server或Oracle中,您可以将date_created落后六周并使用

    over (partition by ...)


以获得累计金额,而差额会以滚动方式为您提供6周的金额。
我了解在MySQL中,您可以通过使用变量来做到这一点,因为分区和结束不直接存在。这是有关如何进行的简要概述:

ROW_NUMBER, Partition and Over in MySQL

关于mysql - 如何在mysql中获得本周的前6周结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10849965/

10-11 03:06