2011-06-19 5 views
0

Je le tableau ci-dessous:pl sql- estimer la durée entre les horodatages

ID |  START  |  END 
A | 11/2/2011 10:00 | 13/2/11 10:00 
A | 15/2/2011 10:00 | 16/2/11 10:00 
A | 18/2/2011 10:00 | 20/2/11 10:00 
B | 11/2/2011 10:00 | 13/2/11 10:00 
C | 14/2/2011 10:00 | 17/2/11 10:00 
D | 19/2/2011 10:00 | 21/2/11 10:00 
D | 25/2/2011 10:00 | 28/2/11 10:00 

Je souhaite estimer, pour les identifications répétées (par exemple A, D) la durée entre la première extrémité et démarrage suivant, la seconde extrémité et troisième START et ainsi de suite, pour les mêmes ID seulement. Par exemple, pour A, le résultat souhaité est:

START2: 15/2/2011 10:00 - END1: 13/2/11 10:00 = 2 days 
START3: 18/2/2011 10:00 - END2: 16/2/11 10:00 = 2 days. 

En outre, pour les ID répétés, je veux que le nombre des premiers événements (dans mon exemple égal à égal à 2, un pour un et un pour D), le compte des événements répétés centraux (dans mon exemple est égal à 1, seulement pour A) et le compte de dernier. Si j'avais une identification avec 10 apparences, j'aurais 1 premier, 1 dernier et 8 événements moyens.

Répondre

1
SELECT id, 
     start, 
     end, 
     start - lag(end) over (partition by id order by start) 
FROM your_table 

Cela suppose que les termes « premier » et « précédent » sont définis par une commande sur la colonne start. Si cela est défini différemment, vous devez ajuster la partie order by start dans mon exemple.

Questions connexes