gpt4 book ai didi

mysql - mysql中当前行和最小日期之间的平均值

转载 作者:行者123 更新时间:2023-11-30 22:57:08 30 4
gpt4 key购买 nike

我有一个包含两列日期和值的表格。该表始终按日期降序排列。

现在我需要当前行日期和最小日期之间的平均值。

例如

日期 值(value) 平均
2000 年 1 月 31 日 2400
1 月 30 日 4000 2500
1 月 29 日 3000 2000
1 月 28 日 1000 1500
2000 年 1 月 27 日 2000

值的平均范围应介于行日期和最小日期之间,例如对于 1 月 28 日,它应该只计算 28 日和 27 日的值,对于 30 日,它应该只计算 1 月 30 日到 1 月 27 日的值。

任何人都可以帮助一个mysql代码。我对此一无所知。

最佳答案

以下情况如何 ( SQL Fiddle ):

SELECT m.Date, m.Value, AVG(m2.Value) AS Avg
FROM MyTable m
LEFT JOIN MyTable m2 ON m.Date >= m2.Date
GROUP BY m.Date
ORDER BY m.Date DESC

如果您的Date 字段是DateDatetime 类型,则上述查询将有效。但是,如果您的 Date 字段是一个字符串,那么您将得不到想要的结果。

如果您的 Date 字段是一个字符串并且已经按降序排序,那么您可以使用以下 ( SQL Fiddle):

SELECT m.Date, m.Value, AVG(m2.sValue) AS Avg
FROM
(
SELECT s.Date, s.Value, @i:=@i+1 AS rn
FROM MyTable s
,(SELECT @i:=0) AS foo
) m
LEFT JOIN
(
SELECT s.Date AS sDate, s.Value AS sValue, @j:=@j+1 AS srn
FROM MyTable s
,(SELECT @j:=0) AS foo
) m2 ON m.rn <= m2.srn
GROUP BY m.Date
ORDER BY m.Date DESC;

关于mysql - mysql中当前行和最小日期之间的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25814346/

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