0

我正在检查 FireFox 的 SQLite 管理器中的 .sqlite 文件,需要查看是否没有收集任何数据。一个例子值一千字:

ReadDate            ReadValue
1361900350183.00    137
1361899753183.00    139
1361900053183.00    138

它们没有主键,并且表不按 ReadDate 或时间排序。[更改输入表不是一种选择!] 我想做的是用简单的 SQL 生成一个如下所示的表:

ReadDate            ReadValue  TimeOffset 
1361899753183.00    139
1361900053183.00    138        300000  // this is ReadDate(1) - ReadDate(0)  
1361900350183.00    137        297000  // this is ReadDate(2) - ReadDate(1)

这将允许我检查数据并查看是否未捕获任何数据值(TimeOffset 将远大于 300000)。我还可以编写一个附加查询来获取超过阈值的所有 TimeOffset 的 COUNT。我无法进行我想象的简单练习。我知道如何进行连接和排序(排序),但在这里我需要将一行与另一行进行比较。我需要一个光标吗?以及如何获得额外的列?我有一种直觉,如果我稍微了解一下词汇,我就能想出搜索词并快速找到答案。非常感谢,戴夫

4

1 回答 1

0

首先,在表中添加一个(空)列

ALTER TABLE MyTable ADD COLUMN TimeOffset NUMERIC;

然后,每条记录的 是记录的列与下一个较小的记录的列TimeOffset之间的差异,即最大的记录仍然小于该记录:ReadDateReadDateReadDate

UPDATE MyTable
SET TimeOffset = ReadDate - (SELECT MAX(ReadDate)
                             FROM MyTable AS t2
                             WHERE t2.ReadDate < MyTable.ReadDate);
于 2013-02-27T08:15:55.253 回答