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

167
Vistas
Comparación de fechas por nivel fijo de detalle en mySQL

Buenos días,

Estoy tratando de crear una consulta mySQL con el siguiente resultado:

Haga clic aquí para ver la salida de la tabla deseada

Para obtener los 60 días desde que se vieron, necesito comparar la fecha de referencia de la fila actual con la siguiente fecha de referencia más reciente en relación con el identificador único y determinar si esa fecha de referencia tiene más de 60 días desde la fecha de referencia de esa fila.

Ej: identificador_único = 123456789

id = 1: dado que no hay una fecha anterior a esta instancia, 60_days_since_seen es VERDADERO (o 1).

id = 2: dado que la fecha de la ocurrencia de la fecha de referencia anterior a esta identificación relativa al identificador único es inferior a 60 días desde la fecha de referencia de esta fila, 60_days_since_seen es FALSO (o 0).

id = 3: dado que la fecha de la ocurrencia de la fecha de referencia anterior a esta identificación relativa al identificador único es mayor a 60 días desde la fecha de referencia de esta fila, 60_days_since_seen es VERDADERO (o 1).

id = 4: dado que no hay una fecha anterior a esta instancia, 60_days_since_seen es VERDADERO (o 1).

id = 5: dado que la fecha de la aparición de la fecha de referencia anterior a esta identificación relativa al identificador único es inferior a 60 días desde la fecha de referencia de esta fila, 60_days_since_seen es FALSO (o 0).

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

La primera consulta también funciona con mysql 5.x.

El segundo usa funciones de ventana que solo son compatibles con mysql 8

 CREATE TABLE datetable ( `Id` INTEGER, `unique_identifier` INTEGER, `reference_date` Date ); INSERT INTO datetable (`Id`, `unique_identifier`, `reference_date`) VALUES ('1', '123456789', '2020-01-05'), ('2', '123456789', '2020-02-20'), ('3', '123456789', '2020-06-29'), ('4', '987654321', '2020-02-21'), ('5', '987654321', '2020-03-30');
 SELECT `Id`, `reference_date` ,IF(@unique_identifier = `unique_identifier`,IF(DATEDIFF(`reference_date`,@date) > 60,1,0),1) 60_days_since_seen ,@unique_identifier := `unique_identifier` as 'unique_identifier' ,@date :=`reference_date` 'reference_date' FROM (SELECT * FROM datetable ORDER BY unique_identifier,reference_date) t1 ,(SELECT @unique_identifier := 0) a,(SELECT @date := NOW()) b
identificación | fecha_de_referencia | 60_días_desde_visto | identificador_único | Fecha de referencia
-: | :-------------- | -----------------: | ----------------: | :------------
 1 | 2020-01-05 | 1 | 123456789 | 2020-01-05    
 2 | 2020-02-20 | 0 | 123456789 | 2020-02-20    
 3 | 2020-06-29 | 1 | 123456789 | 2020-06-29    
 4 | 2020-02-21 | 1 | 987654321 | 2020-02-21    
 5 | 2020-03-30 | 0 | 987654321 | 2020-03-30    
SELECT `Id`, `unique_identifier`, `reference_date`, IF(DATEDIFF(reference_date , LAG(reference_date) OVER ( PARTITION BY unique_identifier ORDER BY reference_date ))> 60 OR LAG(reference_date) OVER ( PARTITION BY unique_identifier ORDER BY reference_date ) is NULL,1,0) 60_days_since_seen FROM datetable
identificación | identificador_único | fecha_de_referencia | 60_días_desde_visto
-: | ----------------: | :-------------- | -----------------:
 1 | 123456789 | 2020-01-05 | 1
 2 | 123456789 | 2020-02-20 | 0
 3 | 123456789 | 2020-06-29 | 1
 4 | 987654321 | 2020-02-21 | 1
 5 | 987654321 | 2020-03-30 | 0

db<>violín aquí

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