MySQL:需要最近30天的每日平均值,包括没有值的天数,应被视为等于最后一个升值的天数

时间:2019-06-04 15:46:52

标签: mysql average

我有一张桌子,上面有每种产品的价格,可以每天更新。

更新过程正在进行中,因此,如果价格不变,则当天和该产品将没有新条目。

我需要计算每个产品最近30天的平均价格,并考虑当天的价格不等于前一个最终升值的日期。

例如,如果12月5日至19日在5/12有一个新价格,而在20/12有另一个新价格,则该价格应被视为等于5/12上保存的价格。

有什么简单的好主意可以使用MySQL查询吗?

例如,我可以通过以下示例来丰富说明:

Table name: product_prices
Fields: id (PRIMARY KEY), product_ID (external key); product_price (FLOAT); creation (DATETIME)

Table data
---------------------------------------------------------
|id   |  product_id   |   product_price    |   creation |
----------------------------------------------------------
|1    |  30           |       15.2         |       1/12 |
|2    |  53           |         7.5        |       1/12 |
|3    |  30           |         15.4       |       5/12 |
|4    |  30           |         16         |      20/12 |
----------------------------------------------------------

在31/12,product_id == 30的平均价格应为(3 * 15.2 + 15 * 15.4 + 12 * 16)= 15.62

1 个答案:

答案 0 :(得分:1)

从Bill Karwin那里检查这个解决方案:

COALESCE()

我相信它可以满足您的需求。