表中有条目包含2列(integerdata,time)。时间存储在TEXT中,格式为HH:MM,这是标准格式之一(根据sqllite documentation)。 'integerdata'是一个整数。我希望获得按小时分组的行内容,每小时使用integerdata作为AVG(integerdata)。例如行:
(10, 10:01)
(2, 10:25)
(5, 11:01)
(9, 11:25)
我希望输出如下:
6, 10:00
7, 11:00
一个新手和可怕的方式是为每个小时范围提供查询(进行24次查询)。类似的东西:
SELECT AVG(integerdata) from table WHERE time BETWEEN 'time1' AND 'time2'
//time1 and time2 can vary between 10:00 to 11:00; then 11:00 to 12:00 ...
第二种方式可能是使用GROUP BY子句,但我不确定如何。我用Google搜索并试图在stackoverflow上查看一些答案,但没有任何帮助。我真的很感激任何贡献。谢谢!
答案 0 :(得分:2)
我希望获得按小时分组的行内容 每小时整数数据为AVG(整数数据)。
这是我的第一个想法。由于您的时间仍为TEXT
,因此您可以使用substr()
函数从时间列中获取仅一小时,然后您可以在GROUP BY
子句中使用此子字符串。
Select AVG(integerdata), SUBSTR(time, 0, 3) as gt from Table group by gt;
我认为您的时间格式为HH:MM
,因此在这种情况下,SUBSTR(time, 0, 3)
只会返回几小时,现在您可以按小时开始分组。
返回:10
,11
,12
,...