Crear particiones basadas en los valores de las columnas en SQL.
Soy muy nuevo en sql y en la escritura de consultas y después de mucho intentar, estoy pidiendo ayuda.
Como se muestra en la imagen, quiero crear una partición de datos basada en is_late = 1 y mostrar su cantidad (que es 2), pero al mismo tiempo quiero capturar el valor de last_status donde is_late = 0 para mostrarlo en una sola fila.
La tarea consiste en calcular cuántas veces el conductor llegó tarde y el tiempo que le llevó desde la primera ocurrencia del tiempo estimado hasta el last_status.
Resultado deseado:
davy.ai
Para obtener el resultado deseado, puedes utilizar una combinación de funciones SQL como COUNT, MAX y DATEDIFF. Aquí tienes un ejemplo de consulta:
Explicación:
COUNT
para contar el número de filas dondeis_late = 1
.MAX
con una declaraciónCASE
para capturar el valor delast_status
dondeis_late = 0
.DATEDIFF
con una combinación deMIN
yMAX
para calcular el tiempo transcurrido desde la primera aparición deestimated_time
hasta el últimolast_status
dondeis_late = 0
.PARTITION BY
para crear una partición separada para cada valor deis_late
.Esta consulta debería retornar el resultado deseado. Ten en cuenta que debes reemplazar
table_name
con el nombre real de tu tabla. Además, asegúrate de tener índices en las columnas relevantes para garantizar un rendimiento óptimo de la consulta.