Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

302
Vistas
tabla de actualización de postgres con columna de evolución temporal

Teniendo esta tabla a la mano:

 SELECT * FROM mutable LIMIT 10; user_id | session_id | timestamp ---------+--------------------+------------------------ 180 | 179020080820120904 | 2008-08-20 12:09:04+01 180 | 179020080820120904 | 2008-08-20 12:09:07+01 180 | 179020080820120904 | 2008-08-20 12:10:35+01 180 | 179020080820120904 | 2008-08-20 12:10:37+01 180 | 179020080820120904 | 2008-08-20 12:10:39+01 180 | 179020080820120904 | 2008-08-20 12:10:41+01 180 | 179020080820120904 | 2008-08-20 12:10:43+01 180 | 179020080820120904 | 2008-08-20 12:10:45+01 180 | 179020080820120904 | 2008-08-20 12:10:47+01 180 | 179020080820120904 | 2008-08-20 12:10:49+01 (10 rows)

Entonces, quiero modificar la tabla agregando una columna t_evolution que muestre el seguimiento de la duración de una ocurrencia de registro a la siguiente, considerando las columnas de timestamp de tiempo, así:

 +---------------------------------------------------------+--------------------+ | user_id | session_id | timestamp | t_evolution | +---------------------------------------------------------+--------------------+ | 180 | 179020080820120904 | 2008-08-20 12:09:04+01 | 0 | | 180 | 179020080820120904 | 2008-08-20 12:09:07+01 | 3 | | 180 | 179020080820120904 | 2008-08-20 12:10:35+01 | 92 | | 180 | 179020080820120904 | 2008-08-20 12:10:37+01 | 94 | | 180 | 179020080820120904 | 2008-08-20 12:10:39+01 | 96 | | 180 | 179020080820120904 | 2008-08-20 12:10:41+01 | 98 | | 180 | 179020080820120904 | 2008-08-20 12:10:43+01 | 100 | | 180 | 179020080820120904 | 2008-08-20 12:10:45+01 | 102 | | 180 | 179020080820120904 | 2008-08-20 12:10:47+01 | 104 | | 180 | 179020080820120904 | 2008-08-20 12:10:49+01 | 106 | +---------------------------------------------------------+--------------------+ (10 rows)
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puede restar la primera marca de tiempo de cada una de las marcas de tiempo y usar EXTRACT() para obtener la cantidad de segundos.
Con la función de ventana FIRST_VALUE() :

 SELECT *, EXTRACT(EPOCH FROM ("timestamp" - FIRST_VALUE("timestamp") OVER (ORDER BY "timestamp"))) t_evolution FROM mutable

En sus datos de muestra, todas las filas contienen el mismo valor para las columnas user_id y session_id . Si desea que la nueva columna realice un seguimiento de la duración de cada user_id de usuario y/o ID de session_id , puede cambiar la cláusula OVER a:

 OVER (PARTITION BY user_id ORDER BY "timestamp")

o:

 OVER (PARTITION BY user_id, session_id ORDER BY "timestamp")

Ver la demostración .
Resultados:

 | user_id | session_id | timestamp | t_evolution | | ------- | ------------------ | ------------------------ | ----------- | | 180 | 179020080820120904 | 2008-08-20T12:09:04.000Z | 0 | | 180 | 179020080820120904 | 2008-08-20T12:09:07.000Z | 3 | | 180 | 179020080820120904 | 2008-08-20T12:10:35.000Z | 91 | | 180 | 179020080820120904 | 2008-08-20T12:10:37.000Z | 93 | | 180 | 179020080820120904 | 2008-08-20T12:10:39.000Z | 95 | | 180 | 179020080820120904 | 2008-08-20T12:10:41.000Z | 97 | | 180 | 179020080820120904 | 2008-08-20T12:10:43.000Z | 99 | | 180 | 179020080820120904 | 2008-08-20T12:10:45.000Z | 101 | | 180 | 179020080820120904 | 2008-08-20T12:10:47.000Z | 103 | | 180 | 179020080820120904 | 2008-08-20T12:10:49.000Z | 105 |
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda