mysql - 如何在mysql中获取本周前6周的结果

标签 mysql

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

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/

相关文章:

mysql - 创建 MYSQL 函数来计算时间差异时出错

mysql - 为mysql数据库表设置日期

php - 无法重新声明的解决方法?

php - 重复IP的mysql

mysql - sequelize.js TIMESTAMP 不是 DATETIME

php - 将 mysql 条目添加在一起并在表中显示它们

mysql - 如何在 mysql 的 Between 子句中包含空日期时间

用于 Google Charts Api 的 PHP MySQL 查询数组 json_encode

java - Hibernate、MySQL、Spring MVC、Freemarker :java. sql.SQLSyntaxErrorException:您的 SQL 语法有错误

php - $_POSTing 多个具有相同 ID 的输入,这些输入是通过 jQuery 在点击时添加的。