Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在单个操作中处理输入向量的查询_Mysql - Fatal编程技术网

Mysql 在单个操作中处理输入向量的查询

Mysql 在单个操作中处理输入向量的查询,mysql,Mysql,我从MySQL数据库中获得了下表: 架构名称:solar 表名:数据 栏目: sensor_id int(11) PK timestamp_ timestamp PK active_power double apparent_power double active_energy double current_ double voltage double frequency d

我从MySQL数据库中获得了下表:

架构名称:solar

表名:数据

栏目:

sensor_id         int(11) PK 
timestamp_        timestamp PK 
active_power      double 
apparent_power    double 
active_energy     double 
current_          double 
voltage           double 
frequency         double
这个问题

SELECT '2014-03-09 08:00:00' as 'From', '2014-03-09 09:00:00' as 'To', sensor_id,  (AVG(active_power)/1000) as 'Average power (W)'
FROM solar.data
WHERE timestamp_ BETWEEN '2014-03-09 08:00:00' and '2014-03-09 09:00:00'
GROUP BY sensor_id
查询只处理8:00到8:10之间的一个时间间隔,但是我希望在一个查询中处理10分钟时间间隔内的一整天

在像C这样的常规编程语言中,可以提供一个日期向量并多次重复查询,但是这个SQL查询是在1300万个条目的记录上执行的,并且对于一个日期来说,计算成本已经很高了。我认为,使用更智能的SQL查询,可以更快地获得最终结果,但我不知道如何获得

是否可以以10分钟为间隔处理一天,以获得每个间隔和每个传感器的有功功率列的平均值?

答案如下:

SELECT   FROM_UNIXTIME(ROUND(UNIX_TIMESTAMP(timestamp_)/(15 * 60))*15 * 60) AS timekey, (AVG(active_power)/1000) as avg_pow, sensor_id
FROM     solar_forecast.data
GROUP BY timekey, sensor_id;

通过这种方式,我将数据时间转换为unixtime,然后按15分钟的间隔对其进行排序,然后将其重新转换为datetime。

对您有帮助吗?是的!,当我得到我想要的最终查询时,我将发布它。