在mysql中,我计算不同时间间隔(3天,7天,30天,60天等)的相同指标的平均值,我需要每个{{ 1}}。
目前,我每隔一段时间使用一次加入。鉴于我必须为许多不同的商店计算这个,并且在几个不同的时间间隔内,是否有更清洁和/或更有效的方法来实现这一点?
以下是我目前使用的代码。
提前感谢您的帮助
id
结果如下:
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
答案 0 :(得分:2)
您可以使用这样的查询 -
SELECT
id,
SUM(IF(date >= '2012-07-28' - INTERVAL 3 DAY, DailySales, 0)) /
COUNT(IF(date >= '2012-07-28' - INTERVAL 3 DAY, 1, NULL)) 'DailySales_3DayAvg',
SUM(IF(date >= '2012-07-28' - INTERVAL 7 DAY, DailySales, 0)) /
COUNT(IF(date >= '2012-07-28' - INTERVAL 7 DAY, 1, NULL)) 'DailySales_7DayAvg'
FROM
SalesTable
WHERE
Store = 2 AND Date < '2012-07-28'
GROUP BY
id
答案 1 :(得分:1)
如果您想提取实时数据,我认为您不能以任何其他方式执行此操作。但是,如果您能够显示稍微过时的数据,则可以为每个项目预先计算这些平均值(如每天一次或两次)。
您可能需要查看Event Scheduler,它允许您将所有内容保存在MySQL中。