Oracle
 sql >> Database >  >> RDS >> Oracle

Differenza di tempo tra i record

Questo è Oracle 9i+, che utilizza la funzione LAG per ottenere il valore del timestamp precedente senza bisogno di unirti automaticamente:

SELECT t.timestamp - LAG(t.timestamp) OVER (ORDER BY t.timestamp) AS diff
  FROM YOUR_TABLE t

...ma poiché i numeri interi rappresentano il numero di giorni nel risultato, una differenza inferiore a 24 ore sarà una frazione. Inoltre, il LAG restituirà NULL se non è presente alcun valore precedente, come se fosse stato utilizzato un OUTER JOIN.

Per vedere i minuti, usa la funzione ROUND:

SELECT ROUND((t.timestamp - LAG(t.timestamp) OVER (ORDER BY t.timestamp)) *1440) AS diff_in_minutes
  FROM YOUR_TABLE t