在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