我的Android sqlite db有两个字段加上_id,我正在寻找包含这个的SQL查询:
SELECT COUNT(*) from table WHERE datetime>? AND datetime<? AND value=1 ORDER BY datetime ASC
但只返回行或计数值= 1,连续4分钟
datetime value
...
2014-11-21 11:00:00 0
2014-11-21 11:01:00 0
2014-11-21 11:02:00 1
2014-11-21 11:03:00 1
2014-11-21 11:04:00 0
2014-11-21 12:05:00 0
2014-11-21 11:06:00 1
2014-11-21 11:07:00 1
2014-11-21 11:08:00 1
2014-11-21 11:09:00 1
2014-11-21 11:10:00 0
...
使用上面的示例数据,它应该只返回4个连续的4个行,而不是全部6个,其中value = 1:
2014-11-21 11:06:00 1
2014-11-21 11:07:00 1
2014-11-21 11:08:00 1
2014-11-21 11:09:00 1
这是可能的SQL和两个字段,如果是这样的任何线索,如何?
(如果它有任何不同,我的日期时间数据被保持为很长的毫秒数)
答案 0 :(得分:1)
我花了一些时间思考可爱的方式来完成你的任务。我不认为有效的方法可以作为查询 所以我认为你应该回到原来很好的光标并像这样做(我相信这将是最快和最简单的方式):
SELECT * from table WHERE value=1 ORDER BY datetime
然后运行获取的记录(伪代码):
int count=0;
int intervalLen=0;
if (move to first)
do {
if(get(value)==1){
if(intervalLen==4)
count++;
intervalLen++;
} else
intervalLen=0;
} while (move to next)
注意它计算不间断的值= 1并且连续不少于4个记录。
如果你必须考虑确切的时间,你应该稍微改变一下