Mysql

MySQL-僅記錄值更改時如何計算一段時間內的平均值

  • April 8, 2015

我正在跟踪各種商品的銷售價格,我想計算一段時間內每件商品的平均價格。

我的簡化表如下所示:

Items
------------------
|key  | title    |
------------------
|1    | Sproket 1|
|2    | Sproket 2|
------------------

Prices
----------------------------------------
|item_key | price | datetime           |
----------------------------------------
|1        | 2.99  | 2014-11-25 02:05:56|
|1        | 1.99  | 2014-12-13 02:05:56|
|2        | 9.99  | 2014-10-25 02:05:56|
|2        | 8.99  | 2014-11-13 02:05:56|
----------------------------------------

Items表包含每個項目的單行。價格表包含每個價格變化的單行。該腳本每天執行並檢查目前價格,如果目前價格與價格中記錄的最新項目價格不同,則在價格**中創建一個新條目。

我的問題是,如何計算 180 天內一件商品的平均價格?

我不能使用 AVG,因為每個項目每天都沒有價格條目。

好吧,我開始編寫 SQL 來完成任務。它變得越來越糟。我需要幾個@variables,也許還有 3 個級別的子查詢。所以,我認為這在 SQL 中是“不可能的”,或者至少非常混亂。

相反,我會推薦 david 的每日價格建議,這將使AVG工作變得容易(可能沒有@variables 或子查詢),或者用一些“真正的”程式語言(PHP、VB、Java ……)編寫它。

一個醜陋的人正在做日期算術 - 範圍為 180 天前和今天。遍歷數據ASCENDING導致了一個問題;DESC導致不同的問題。

引用自:https://dba.stackexchange.com/questions/97135