获取平均星期值

时间:2015-02-26 10:31:18

标签: mysql sql group-by timestamp

我有这样的统计数据:

time        val1
1424166578  51
1424166877  55
1424167178  57
1424167477  57  

time是一个unix时间戳。每5分钟有一条记录,不包括夜晚和星期日。这持续数周。

现在我希望获得平均日和平均周的这些值。结果应包括每5分钟的值,如正常值,但平均过去几天或几周。

结果应如下所示:

time    val1
0       43.423
300     46.635
600     51.887
...

所以时间可以是从一天或一周开始的相对时间的时间戳。也许最好使用DATETIME ......不确定。

例如,如果我使用GROUP BY FROM_UNIXTIME(time, '%Y%m%d'),我会获得一整天的一个值。但我想要所有日子的所有平均值。

2 个答案:

答案 0 :(得分:1)

您似乎有兴趣按五分钟间隔而不是日期对日期进行分组。这很简单:

SELECT
    HOUR(FROM_UNIXTIME(time)) AS HH,
    (MINUTE(FROM_UNIXTIME(time)) DIV 5) * 5 AS MM,
    AVG(val1) AS VAL
FROM your_table
WHERE time > UNIX_TIMESTAMP(CURRENT_TIMESTAMP - INTERVAL 7 DAY)
GROUP BY HH, MM

以下结果将说明日期的确定方式:

time        FROM_UNIXTIME(time)  HH  MM
1424166578  2015-02-17 14:49:38  14  45
1424166877  2015-02-17 14:54:37  14  50
1424167178  2015-02-17 14:59:38  14  55
1424167477  2015-02-17 15:04:37  15  00

答案 1 :(得分:0)

我会这样做:

select date(from_unixtime(time)) as day, avg(val)
from table t
group by date(from_unixtime(time))
order by day;

虽然你可以使用format参数,但我想更多的是将值转换为字符串而不是日期/时间。