查找连续时间的最小/最大时间戳MySQL

时间:2018-11-26 16:29:18

标签: mysql timestamp time-series duration gaps-and-islands

我有一个表,用于记录不同用户的时间戳。我需要根据哪个ANT拾取信号为每个用户找到连续时间戳的持续时间。

CREATE TABLE F30T (
    RN AUTO_INCREMENT NOT NULL PRIMARY,
    UID VARCHAR(25) NOT NULL,
    ANT INT NOT NULL,
    ScanTime TIMESTAMP NOT NULL)

INSERT INTO F30T (
    UID,
    ANT,
    ScanTime)
  VALUES 
    ('4000bcc3584f', 1, '2018-08-17 19:19:04'),
    ('4000bcc3584f', 1, '2018-08-17 19:19:05'),
    ('4000bcc3584f', 1, '2018-08-17 19:19:06'),
    ('4000bcc3584f', 1, '2018-08-17 19:19:25'),
    ('4000bcc3584f', 4, '2018-08-17 19:19:26'),
    ('4000bcc3584f', 2, '2018-08-17 19:19:27'),
    ('4000bcc3584f', 2, '2018-08-17 19:19:28'),
    ('4000bcc3584f', 2, '2018-08-17 19:19:29'),
    ('4000bcc2a44f', 4, '2018-08-17 19:19:05'),
    ('4000bcc2a44f', 4, '2018-08-17 19:19:06'),
    ('4000bcc2a44f', 1, '2018-08-17 19:19:06'),
    ('4000bcc2a44f', 4, '2018-08-17 19:19:07');

因此,在上面的示例中,我希望它向我显示一个这样的表:

    UID         ANT        MIN(ScanTime)          MAX(ScanTime)       Duration
4000bcc3584f     1      2018-08-17 19:19:04    2018-08-17 19:19:06       3
4000bcc3584f     2      2018-08-17 19:19:27    2018-08-17 19:19:29       3
4000bcc2a44f     4      2018-08-17 19:19:05    2018-08-17 19:19:06       3

在其中为用户和ANT选择连续的时间戳,并以min / max分组,并找到持续时间。顺便说一下,我正在使用MySQL,但这最终会被翻译成python程序

在此先感谢您的帮助-我是编码领域的新手,只是想自己找到办法。

0 个答案:

没有答案