0

表中有条目包含 2 列(整数数据、时间)。时间存储在 TEXT 中,格式为 HH:MM,这是标准格式之一(根据sqllite 文档)。'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 子句,但我不确定如何。我用谷歌搜索并试图在stackoverflow上查看一些答案,但没有任何帮助。我真的很感激任何贡献。谢谢!

4

1 回答 1

2

我正在寻找按一天中的小时分组的行内容,整数数据为每小时的 AVG(integerdata)。

这是我的第一个想法。由于您的时间仍然是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, ...

于 2013-04-05T22:50:40.947 回答