Oracle - Ayuda consulta SQL

 
Vista:

Ayuda consulta SQL

Publicado por Rodrigo (1 intervención) el 04/02/2015 19:40:57
Hola,

Quiero hacer una consulta SQL en mi base de datos pero no logro poder obtener el resultado deseado.

Tengo una tabla de log como la siguiente:

Tabla LOG:
Usuario Terminal Accion Fecha
A 1 k 12:31
B 2 j 12:32
A 1 h 12:33
A 1 logout 12:34
B 2 z 12:34
B 3 y 12:34
B 3 x 12:35
B 3 Logout 12:37
B 2 Logout 15:30

De la tabla quisiera sacar el tiempo que pasó desde la última acción del usuario en una terminal antes del logout (cierre de sesión).

El resultado que se quiere es:
Usuario A en terminal 1, desde la última acción hasta el logout pasó 1 minuto
Usuario B en terminal 2, desde la última acción hasta el logout pasaron 176 minutos
Usuario B en terminal 3, desde la última acción hasta el logout pasaron 2 minutos

Creo que es bastante clara la explicacion..
Se me hace dificil, me pueden ayudar?
Graciassssss infinitas



Un intento fallido que estaba probando:

select cierresession.usuario, cierresession.terminal, cierresession.accion, cierresession.fecha, MAX(acciones.fecha)

FROM
(select usuario, terminal, accion, fecha
FROM LOG log1
where accion = logout) cierresession,
(select usuario, terminal, accion, fecha
FROM LOG log2
where NOT (accion = 70 )) acciones

GROUP BY cierresession.usuario, cierresession.terminal, cierresession.accion, cierresession.fecha, acciones.fecha
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Ayuda consulta SQL

Publicado por Jorge (21 intervenciones) el 04/02/2015 20:49:33
Se me ocurre algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SELECT ult_logout.usuario,
       ult_logout.terminal,
       (ult_logout.fec_logout - ult_acc.fec_accion) tiempo
FROM
(
	SELECT usuario,
	       terminal,
	       max(fecha) fec_accion
	FROM   log
	WHERE  accion <> 'logout'
	GROUP BY usuario,
	       terminal
) ult_acc,
(
	SELECT usuario,
	       terminal,
	       max(fecha) fec_logout
	FROM   log
	WHERE  accion = 'logout'
	GROUP BY usuario,
	       terminal
) ult_logout
WHERE ult_acc.usuario = ult_logout.usuario
AND   ult_acc.terminal = ult_logout.terminal


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar