Mysql
MySQL-僅記錄值更改時如何計算一段時間內的平均值
我正在跟踪各種商品的銷售價格,我想計算一段時間內每件商品的平均價格。
我的簡化表如下所示:
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
導致不同的問題。