在mysql中,我計算了不同時間間隔(3天,7天,30天,60天等)的相同度量的平均值,並且我需要結果在單行每id
。計算不同時間間隔的平均值
目前,我正在每個間隔使用Join。鑑於我必須爲許多不同的商店計算這一點,並在幾個不同的時間間隔內進行計算,是否有一種更清潔和/或更有效的方法來完成此任務?
下面是我目前使用的代碼。
在此先感謝您的幫助
SELECT T1.id, T1.DailySales_3DayAvg, T2.DailySales_7DayAvg
FROM(
SELECT id, avg(DailySales) as 'DailySales_3DayAvg'
FROM `SalesTable`
WHERE `Store`=2
AND `Date` >= DATE_SUB('2012-07-28', INTERVAL 3 DAY)
AND `Date` < '2012-07-28'
) AS T1
JOIN(
SELECT id, avg(DailySales) as 'DailySales_7DayAvg'
FROM `SalesTable`
WHERE `Store`=2
AND `Date` >= DATE_SUB('2012-07-28', INTERVAL 7 DAY)
AND `Date` < '2012-07-28'
) AS T2
ON T1.ArtistId = T2.ArtistId
當結果爲:
id DailySales_3DayAvg DailySales_7DayAvg
3752 1234.56 1114.78
...
不,我不認爲這是...除非你想生成的平均值在接收程序後,你從MySQL獲得了數據儘管子查詢至少會刪除'連接'。 (但不是更漂亮) – 2013-02-28 16:09:36
「平均」是什麼意思? 「超過一段時間」是什麼意思?目前,您正在採用屬於相應日期範圍內SalesTable(對於給定商店)中所有記錄的平均值'DailySales'。然而,這不是這段時期的「平均每日銷售額」:考慮一下商店在特定時間段內有多個(或不包含)記錄會發生什麼情況:也許您希望將所有銷售額的總和除以天數?更明確地定義問題,然後我們可以幫助建議可能的答案。 – eggyal 2013-02-28 16:11:24
@RefugnicEternium,謝謝你的回覆。數據是歷史數據,然後進入R.我可以很容易地在R中計算它,但在sql中執行速度要快得多。看起來我堅持使用代碼。謝謝。 – 2013-02-28 16:22:54