我正在开发一个Android应用程序,它有一个名为&#34的表;条目" 表结构如下
id name operation date
----------------------------------------------
1 engine on 08-03-2015 19.22
2 engine off 08-03-2015 19.23
3 light on 08-03-2015 19.23
4 light off 08-03-2015 19.28
5 engine on 08-03-2015 19.28
6 engine off 08-03-2015 19.30
我想得到如下输出
name duration
----------------
engine 3
light 5
这是发动机和灯处于开启状态的总时间。 对于发动机的详细信息,时间差b / w开启和关闭状态被添加并作为输出。类似地对于光。 任何人都帮助我 不知道如何开始。 提前致谢
答案 0 :(得分:0)
您可以使用ANSI SQL(与SQL Server和SQLite兼容)通过使用相关子查询来获取每个的“off”值:
select name,
sum(strftime('%s', offtime) - strftime('%s', date)) as numseconds
from (select e.*,
(select min(e2.date)
from entries e2
where e2.name = e.name and
e2.date > e.date and
e.operation = 'off'
) as offtime
from entries e
where operation = 'on'
) e
group by name;
请注意,这使用SQLite构造来计算持续时间(以秒为单位)。使用datediff()
在SQL Server中有一个类似的构造。
编辑:
在SQL Server中:
select name,
datediff(seconds, date, offtime) as numseconds
from (select e.*,
(select min(e2.date)
from entries e2
where e2.name = e.name and
e2.date > e.date and
e.operation = 'off'
) as offtime
from entries e
where operation = 'on'
) e
group by name;