Kri*_*r L 3 mysql select datetime timespan
问题:
我有一个传感器读数数据库,带有读取传感器时间的时间戳.基本上它看起来像这样:
Sensor | Timestamp | Value
Run Code Online (Sandbox Code Playgroud)
现在我想从这些数据中制作一个图表,我想制作几个不同的图表.假设我想要一个最后一天,一个是上周,一个是上个月.每个图的分辨率将不同,因此对于日图,分辨率将为1分钟.对于周图表,它将是一个小时,对于月份图表,它将是一天或一天的四分之一.
所以我希望输出是每个分辨率的平均值(例如,Day =一分钟内的平均值,Week =一小时内的平均值等等)
例如:
Sensor | Start | End | Average
Run Code Online (Sandbox Code Playgroud)
如何在mySQL中轻松快速地完成此操作?我怀疑它会创建一个临时表或进行排序并将传感器数据与其连接以获得传感器的平均值?但我对mySQL的了解最多也是有限的.
有一个非常聪明的方法吗?
SELECT DAY(Timestamp), HOUR(Timestamp), MINUTE(Timestamp), AVG(value)
FROM mytable
GROUP BY
DAY(Timestamp), HOUR(Timestamp), MINUTE(Timestamp) WITH ROLLUP
Run Code Online (Sandbox Code Playgroud)
WITH ROLLUP
这里条款产生与平均每个额外的行HOUR
和DAY
,就像这样:
SELECT DAY(ts), HOUR(ts), MINUTE(ts), COUNT(*)
FROM (
SELECT CAST('2009-06-02 20:00:00' AS DATETIME) AS ts
UNION ALL
SELECT CAST('2009-06-02 20:30:00' AS DATETIME) AS ts
UNION ALL
SELECT CAST('2009-06-02 21:30:00' AS DATETIME) AS ts
UNION ALL
SELECT CAST('2009-06-03 21:30:00' AS DATETIME) AS ts
) q
GROUP BY
DAY(ts), HOUR(ts), MINUTE(ts) WITH ROLLUP
Run Code Online (Sandbox Code Playgroud)
2, 20, 0, 1 2, 20, 30, 1 2, 20, NULL, 2 2, 21, 30, 1 2, 21, NULL, 1 2, NULL, NULL, 3 3, 21, 30, 1 3, 21, NULL, 1 3, NULL, NULL, 1 NULL, NULL, NULL, 4
2, 20, NULL, 2
在这里意味着COUNT(*)
是2
对DAY = 2
,HOUR = 20
和所有分钟.
归档时间: |
|
查看次数: |
4667 次 |
最近记录: |