RESOLVIDO: MySQL: SELECT para pegar o menor tempo entre registros da mesma tabela

Boa noite,
Preciso gerar uma consulta SQL que traga o melhor tempo entre registros de uma única tabela, exemplo:

Minha tabela:

    CREATE TABLE `mesaproducao` (
    	`id` INT(11) NOT NULL AUTO_INCREMENT,
    	`codProducao` INT(11) NOT NULL,
    	`mesaProducao` VARCHAR(50) NOT NULL,
    	`pn` VARCHAR(50) NOT NULL,
    	`descricao` VARCHAR(50) NOT NULL,
    	`multiplo` INT(11) NOT NULL,
    	`tipo` VARCHAR(50) NOT NULL,
    	`lote` VARCHAR(50) NOT NULL,
    	`bip` VARCHAR(50) NOT NULL,
    	PRIMARY KEY (`id`)
    )

Abaixo explicado e destacado de verde o que quero trazer com este SELECT:

Não sei se MySql tem a função Rank nativa como nos grandes bancos, mas pesquise sobre Rank, exemplo: https://stackoverflow.com/questions/3333665/rank-function-in-mysql

Com isto, basta colocar no where se a colocação é igual a 1.

  • Para achar o tempo anterior, você pode incluir uma subquery, que busca para o mesmo PN, o maior bip que seja menor o bip da linha atual.

  • Depois você subtrai o bip atual desse menor bip encontrado.

  • Depois você orderna por pn e pela diferença encontrada na linha anterior.

  • Para saber o PN e o melhor tempo coletado, aagrupe o resultado anterior por PN e buscar a mínima diferença.

Algo assim:

  select
    *,
    bip - previous_bip diff
  from
    (
    select *,
      (select max(bip) min_bip 
       from mesaproducao mpi 
       where mpi.pn = mp.pn
       and mpi.bip < mp.bip
      ) previous_bip 

    from mesaproducao mp
    ) t_previous

Obrigado pela ajuda pessoal, segue solução, desta forma exporto para Excel e faço um pouco diferente, vou calcular a média e não o menor tempo, assim terei o resultado esperado:

/*Retorna a diferença em segundos, de um Bip para Outro*/
SELECT 
reg_atual.pn, 
reg_atual.descricao, 
reg_anterior.bip AS bipInicial, 
reg_atual.bip AS bipFinal,
TIMEDIFF(STR_TO_DATE(reg_atual.bip, '%d/%m/%Y %H:%i:%s'), STR_TO_DATE(reg_anterior.bip, '%d/%m/%Y %H:%i:%s')) as tempo

FROM
mesaproducao AS reg_atual

LEFT JOIN
mesaproducao AS reg_anterior

ON reg_anterior.id < reg_atual.id
GROUP BY reg_anterior.id