Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建SQLite查询_Sqlite - Fatal编程技术网

创建SQLite查询

创建SQLite查询,sqlite,Sqlite,我有一个SQLite数据库,我想创建一个查询,如果DateTime在60分钟内,它将对记录进行分组-困难的部分是DateTime是累积的,因此如果我们有3条记录,日期时间分别为2019-12-14 15:40:00、2019-12-14 15:56:00和2019-12-14 16:55:00,那么它们都将归入一个组。请参阅查询的手和所需输出,以帮助您理解需求 数据库表“手” ID日期时间结果 12019-12-14 15:40:00-100 22019-12-14 15:56:00100

我有一个SQLite数据库,我想创建一个查询,如果DateTime在60分钟内,它将对记录进行分组-困难的部分是DateTime是累积的,因此如果我们有3条记录,日期时间分别为2019-12-14 15:40:00、2019-12-14 15:56:00和2019-12-14 16:55:00,那么它们都将归入一个组。请参阅查询的手和所需输出,以帮助您理解需求

数据库表“手”
ID日期时间结果
12019-12-14 15:40:00-100
22019-12-14 15:56:001000
32019-12-14 16:55:00-2000
42012-01-12 12:00:00400
52016-10-01 21:00:00900
62016-10-01 20:55:001000

所需的查询输出
开始时间计数结果
2019-12-14 15:40:003-1100
2012-01-12 12:00:001400
2016-10-01 20:55:0021900

您可以使用一些窗口功能来指示新组应该从哪个记录开始(因为与上一个记录的日期时间差为60分钟或更大),然后将该信息转换为唯一的组号。最后,您可以按该组号分组并对其执行聚合功能:

with base as (
  select DateTime, Result, 
         coalesce(cast((
            julianday(DateTime) - julianday(
                lag(DateTime) over (order by DateTime)
            )
         ) * 24 >= 1 as integer), 1) as firstInGroup
  from   Hands
), step as (
  select DateTime, Result, 
         sum(firstInGroup) over (
            order by DateTime rows 
            between unbounded preceding and current row) as grp
  from base
)
select   min(DateTime) DateTime,
         count(*) Count,
         sum(Result) Result
from     step
group by grp;

如果有另一行,结果会是什么:
2016-13-01 21:59:00 100
?上一个日期21:00:00和21:59:00之间的差值为59分钟,因此它属于该范围,因此将被包括在内。结果会改变(增加100)2016-13-01 20:55:00 2000至少确定你的日期。没有第13个月。我已经确定了日期,谢谢你指出。谢谢。这是预期的工作,我想我有很多学习要做,能够创建这样的查询。