Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/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
Mysql SQL-在时间跨度内选择x个条目_Mysql_Sql_Count_Precision_Timespan - Fatal编程技术网

Mysql SQL-在时间跨度内选择x个条目

Mysql SQL-在时间跨度内选择x个条目,mysql,sql,count,precision,timespan,Mysql,Sql,Count,Precision,Timespan,我正在MySQL中创建一个数据库,其中包含一个度量表。对于每次测量,我都要存储它到达的日期时间。为了在应用程序中显示日/周/月/年不同时间间隔测量的曲线图,我希望对我拥有的数据点进行采样,以便返回e。G全年以及当天/小时的30个数据点。这与股票价格图的操作相同: vs 如您所见,两张图片中的数据点数量相同 那么,如何通过SQL在MySQL的时间跨度内选择x个条目呢 我的数据如下所示: +====+====================+=============+==========+ |

我正在MySQL中创建一个数据库,其中包含一个度量表。对于每次测量,我都要存储它到达的日期时间。为了在应用程序中显示日/周/月/年不同时间间隔测量的曲线图,我希望对我拥有的数据点进行采样,以便返回e。G全年以及当天/小时的30个数据点。这与股票价格图的操作相同:

vs

如您所见,两张图片中的数据点数量相同

那么,如何通过SQL在MySQL的时间跨度内选择x个条目呢

我的数据如下所示:

+====+====================+=============+==========+
| id | datetime           | temperature | humidity |
+====+====================+=============+==========+
| 1  | 1-15-2016 00:30:00 | 20          | 40       |
+----+--------------------+-------------+----------+
| 2  | 1-15-2016 00:35:00 | 19          | 41       |
+----+--------------------+-------------+----------+
| 3  | 1-15-2016 00:40:00 | 20          | 40       |
+----+--------------------+-------------+----------+
| 4  | 1-15-2016 00:45:00 | 20          | 42       |
+----+--------------------+-------------+----------+
| 5  | 1-15-2016 00:50:00 | 21          | 42       |
+----+--------------------+-------------+----------+
| 6  | 1-15-2016 00:55:00 | 20          | 43       |
+----+--------------------+-------------+----------+
| 7  | 1-15-2016 01:00:00 | 21          | 43       |
+====+====================+=============+==========+
比如说,我总是想要更多的两个数据点。所以在过去的半小时里,我希望数据库返回数据点1和4,在过去的十分钟里,我希望它返回6和7

谢谢你的帮助


PS:我很抱歉我的英语有任何错误

我相信你的答案可以在以下位置找到:

如果您希望筛选出不在您的日期/时间内的任何项目,您的查询将使用:
从表中选择*,其中日期/时间是您想要排序的依据。好的,假设采用非常简单的系统方法,您可以获得任何定义期间的第一个和最后一个条目:

select *
from table
where mydatetime =
   (select 
    max(mydatetime)
    from table
    where mydatetime between '2017-03-01' and '2017-03-15'
    )
OR mydatetime =
   (select 
    min(mydatetime)
    from table
    where mydatetime between '2017-03-01' and '2017-03-15'
    )

我认为样本数据和期望的结果将阐明您真正想要做的事情。从DateTime开始,您可以按天/周/月/年进行分组。您希望从总体数据中进行抽样,还是希望对其进行分组和聚合,例如,取平均值、最大值、,还是每个时间段的最小值?我想从我的总体数据中取样。一天图中的数据点比一个月图中的数据点多得多。在任何情况下,是否希望每个时段的行数相同?你在30分钟内提到2分,或者每10分钟提到2分。或者你总是想要任何时期的2分?您希望系统地选择分数,例如,周期中的第一个和最后一个分数,还是随机选择?如果是随机的,则您可以在每个选择中获得不同的结果。请将此作为注释添加到问题中。如果我尝试添加注释,则会出现一个对话框,告诉我我没有足够的声誉进行注释:/谢谢,但我已经知道了这一点。我想对数据点进行采样,我想说,我想要30个均匀分布的数据点。