SQLite 比较两个连续行之间的日期

SQLite compare dates between two consecutive rows

我有 table 个媒体文件:

id title date

日期是纪元格式,比如我有3张照片:

1  xxxxx 1644777107349(6:31:47.349)
2  wwwww 1644777110138(6:31:50.138)
3  zzzzz 1644777117453(6:31:57.453)

我想获取间隔为 5 到 30 秒的照片的数量,例如: 2 和 3 的间隔是 7 秒,所以我想得到 2。我想将每一行与连续的行进行比较。

这是 SQL 查询:

SELECT Count(*)
FROM   (SELECT A._id
    FROM   media_files A
        INNER JOIN media_files B
            ON( Abs(A.added_time - B.added_time) >= 5000 )
                 AND A._id != B._id
                 AND A.type = 'image'
                 AND B.type = 'image'
    WHERE  Abs(A.added_time - B.added_time) <= 30000
    GROUP  BY A._id) 

对于上面的例子,我总是得到 3 而不是 2,知道问题出在哪里吗?

这是一个测试设置和一个查询,其中 returns 仅在前一个 one.NB 之后 5 到 30 秒之间拍摄的图像我正在处理 mySQL 所以我有放5和30秒可能是在SQLlite中你需要放5000和30000.

CREATE TABLE media_files (
  id INT,
  title VARCHAR(25),
  added_date DATETIME,
  type VARCHAR(25)
  );
INSERT INTO media_files VALUES ( 1,  'xxxxx', '2022-02-13 6:30:47.349','image');
INSERT INTO media_files VALUES ( 1,  'xxxxx', '2022-02-13 6:31:27.349','image');
INSERT INTO media_files VALUES ( 1,  'xxxxx', '2022-02-13 6:31:47.349','image');
INSERT INTO media_files VALUES ( 2,  'wwwww', '2022-02-13 6:31:50.138','image');
INSERT INTO media_files VALUES ( 3,  'zzzzz', '2022-02-13 6:31:57.453','image');
SELECT    id,
          added_date ad,
          added_date -
        ( SELECT MAX(added_date) 
          FROM media_files m
           WHERE m.added_date < mf.added_date ) DIF
FROM  media_files mf
WHERE (          added_date -
        ( SELECT MAX(added_date) 
          FROM media_files m
          WHERE m.added_date < mf.added_date )) > 5
AND   (          added_date -
        ( SELECT MAX(added_date) 
          FROM media_files m
          WHERE m.added_date < mf.added_date )) < 30;
id | ad | DIF -: | :------------------ | --: 1 | 2022-02-13 06:31:47 | 20 3 | 2022-02-13 06:31:57 | 7