gpt4 book ai didi

MySQL 移动平均线 - 4 周

转载 作者:可可西里 更新时间:2023-11-01 07:37:36 26 4
gpt4 key购买 nike

我已经阅读了几篇关于在 mysql 查询中估计移动平均值的文章,但是我的情况似乎稍微困难一些,因为该表不包含我想要计算平均值的列。我需要计算每组的行数,并显示该组的移动平均值。

表中基本上只有一列相关,即 DATETIME 列。该表可以包含具有相同日期的多行。我想按 YEARWEEK 和 COUNT(*) 每个 YEARWEEK 组的行数对表进行分组。这很容易,难的是还要计算移动4周平均值

+-------------+
| DatoLagtTil |
+-------------+
| 2012-11-01 |
| 2012-10-25 |
| 2012-10-25 |
| 2012-10-11 |
| 2012-10-04 |
| ... |
| ... |
| ... |
| ... |
+-------------+

这是我要创建的输出表 - 4 周 (YEARWEEK) 移动平均线是困难的部分(注意:下面的示例不是基于上面的示例数据)

+------------+------------+-----------+
| YEARWEEK | COUNT | m_average |
+------------+------------+-----------+
| 201201 | 5 | 5 |
| 201202 | 10 | 7.5 |
| 201203 | 5 | 6.6 |
| 201204 | 15 | 8.8 |
| 201205 | 10 | 10 |
| 201206 | 5 | 8.8 |
| 201207 | 5 | 8.8 |
+------------+------------+-----------+

我找到了几个很好的资源来解释如何计算移动平均线,但是我无法让它们在我的案例中起作用。我希望你们能帮忙。

谢谢

---状态更新---

自发布此问题以来,我一直在尝试一些解决方案。我觉得我越来越近了,但仍然缺少一些重要的东西。

在下面的查询中,我没有收到任何错误,但是我得到的计数(k.DatoLagtTil)太高,所有 YEARWEEK 组的 AVG(cnt)都相同......我相信这与那里有关我正在使用 WHERE 子句

SELECT YEARWEEK(k.DatoLagtTil), COUNT(k.DatoLagtTil), AVG(cnt)
FROM Kunder_db k, (SELECT COUNT(*) AS cnt
FROM Kunder_db
WHERE YEARWEEK(DatoLagtTil) BETWEEN YEARWEEK(DatoLagtTil) - 3 AND YEARWEEK(DatoLagtTil)
GROUP BY YEARWEEK(DatoLagtTil)) x
GROUP BY YEARWEEK(k.DatoLagtTil)

最佳答案

只需使用合适的范围标准再次将计数查询与您的表连接起来:

SELECT   t.yearweek,
t.count,
COUNT(*) / 4 AS m_average

FROM my_table JOIN (
SELECT YEARWEEK(DatoLagtTil) AS yearweek,
COUNT(*) AS count
FROM my_table
GROUP BY yearweek
) t ON t.yearweek BETWEEN YEARWEEK(DatoLagtTil)
AND YEARWEEK(DatoLagtTil + INTERVAL 3 week)

GROUP BY t.yearweek

查看 sqlfiddle .

关于MySQL 移动平均线 - 4 周,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13324568/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com