我想知道您是否可以给我一些想法来计算同一字段不同时间之间的最大间隔。

id, npm, nama_mahasiswa, jurusan, fecha_hora
 1, CABRAL, 24, , 2017-08-25 15:27:12
 2, RUSSO, 6, , 2017-08-25 15:32:10
 3, CABRAL, 59, , 2017-08-25 15:34:15
 4, RUSSO, 54, , 2017-08-25 15:38:21
 5, CABRAL, 28, , 2017-08-25 15:38:47
 6, FERNANDEZ, 61, , 2017-08-25 15:39:03
 7, DUARTE, 56, , 2017-08-25 15:40:02
 8, DUARTE, 47, , 2017-08-25 15:40:29
 9, RUSSO, 69, , 2017-08-25 15:43:17
10, CABRAL, 31, , 2017-08-25 15:43:35
11, FERNANDEZ, 15, , 2017-08-25 15:48:14


例如,对于每个“ CABRAL”,我想知道第一到第二,第二到第三和第三到第四的不同时间。一旦我有了这个,我将采取最大间隔。

我会很感激的。

谢谢!

最佳答案

例如。:

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, npm VARCHAR(20) NOT NULL
, jurusan INT NOT NULL
, fecha_hora DATETIME NOT NULL
);

INSERT INTO my_table VALUES
( 1, 'CABRAL'   , 24, '2017-08-25 15:27:12'),
( 2, 'RUSSO'    ,  6, '2017-08-25 15:32:10'),
( 3, 'CABRAL'   , 59, '2017-08-25 15:34:15'),
( 4, 'RUSSO'    , 54, '2017-08-25 15:38:21'),
( 5, 'CABRAL'   , 28, '2017-08-25 15:38:47'),
( 6, 'FERNANDEZ', 61, '2017-08-25 15:39:03'),
( 7, 'DUARTE'   , 56, '2017-08-25 15:40:02'),
( 8, 'DUARTE'   , 47, '2017-08-25 15:40:29'),
( 9, 'RUSSO'    , 69, '2017-08-25 15:43:17'),
(10, 'CABRAL'   , 31, '2017-08-25 15:43:35'),
(11, 'FERNANDEZ', 15, '2017-08-25 15:48:14');

SELECT npm
     , MAX(diff) max_interval
  FROM
     ( SELECT x.*
            , TIMEDIFF(x.fecha_hora,MAX(y.fecha_hora)) diff
         FROM my_table x
         JOIN my_table y
           ON y.npm = x.npm
          AND y.fecha_hora < x.fecha_hora
        GROUP
           BY x.npm
            , x.fecha_hora
     ) a
 GROUP
    BY npm;
+-----------+--------------+
| npm       | max_interval |
+-----------+--------------+
| CABRAL    | 00:07:03     |
| DUARTE    | 00:00:27     |
| FERNANDEZ | 00:09:11     |
| RUSSO     | 00:06:11     |
+-----------+--------------+
4 rows in set (0.00 sec)

07-26 09:42