MySQL: требуется среднее значение за последние 30 дней, включая дни без значения, которое считается равным последнему оцененному дню - PullRequest
0 голосов
/ 04 июня 2019

У меня есть таблица с ценами по продуктам, которая может обновляться ежедневно.

Процесс обновления происходит по событию, поэтому, если цена не меняется, новые записи для этого дня и этого продукта отсутствуют.

Мне нужно рассчитать среднюю цену за последние 30 дней для каждого продукта, учитывая день без цены, равной предыдущему последнему оцененному дню.

Например, если есть новая цена 5/12, а другая 20/12 с 5 по 19 декабря, цена считается равной той, которая была сохранена 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 Ответ

1 голос
/ 04 июня 2019

Проверьте это решение от Билла Карвина:

COALESCE ()

Я считаю, что оно делает то, что вам нужно.

...