按小时sqlite android分组结果行

时间:2013-04-05 22:28:14

标签: android sqlite time

表中有条目包含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上查看一些答案,但没有任何帮助。我真的很感激任何贡献。谢谢!

1 个答案:

答案 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)只会返回几小时,现在您可以按小时开始分组。

返回:101112,...