Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.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/1/typo3/2.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
Sql 以一分钟为增量选择分钟平均值_Sql - Fatal编程技术网

Sql 以一分钟为增量选择分钟平均值

Sql 以一分钟为增量选择分钟平均值,sql,Sql,我正试图想出一种在一个SQL中完成以下操作的方法 我希望选择09:00和17:30之间的所有时间,以一分钟为增量,而不使用for循环。有办法吗 select avg(price), Date(timecolumn) from table where Time(timeColumn) >= '09:00:00' and Time(timeColumn) <= '09:01:00' 选择平均值(价格)、日期(时间列) 从桌子上 其中时间(时间列)>='09:00:00' 时间(tim

我正试图想出一种在一个SQL中完成以下操作的方法

我希望选择09:00和17:30之间的所有时间,以一分钟为增量,而不使用for循环。有办法吗

select avg(price), Date(timecolumn)
from table 
where Time(timeColumn) >= '09:00:00'
and Time(timeColumn) <= '09:01:00'
选择平均值(价格)、日期(时间列)
从桌子上
其中时间(时间列)>='09:00:00'

时间(timeColumn)我假设这里的最大障碍是您希望保留(并返回)0(或null)的行,也就是说,在
表中没有行的一分钟增量

<>你可能想考虑在你的数据库中添加一个表。比如:

FullTime TIME,
Hour INT,
Minute INT,
Second INT
86400行可以将精度降低到第二行,并且可以在其上放置索引

然后,您可以直接加入此表:

SELECT AVG(Price), DATE(timeColumn)
FROM times
LEFT OUTER JOIN myTable ON times.FullTime = myTable.timeColumn
WHERE times.timeColumn BETWEEN '09:00:00' AND '17:30:00'
AND times.Seconds = 0
GROUP BY times.FullTime

您必须按日期、小时和分钟分组

SELECT AVG(price), DATE(timecolumn), HOUR(timecolumn), MINUTE(timecolumn)
FROM `table` 
WHERE TIME(timeColumn) >= '09:00:00' AND TIME(timeColumn) <= '17:01:00'
GROUP BY DATE(timecolumn), HOUR(timecolumn), MINUTE(timecolumn)
选择平均值(价格)、日期(时间列)、小时(时间列)、分钟(时间列)
从'table'开始

WHERE TIME(timeColumn)>='09:00:00'和TIME(timeColumn)告诉我们您使用的是哪个数据库系统。当然,它非常简单,我无法立即看到解决方案:)@xdazz-我不确定他使用的是什么数据库-但强制转换列或使用(上/下等)修改将否定索引(无论如何在informix中)-因此,导致查询引擎对此选择运行顺序扫描。如果他/她正在使用伟大的解决方案来结合我现在使用的两步方法的引擎是真的,那么使用大型记录集可能会变慢。