es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Seleccionar operación opuesta agrupada por mes SQL Redshift

Estoy tratando de extraer una lista de operaciones inactivas en cada mes:

La tabla 1 “toda la operación” contiene la lista completa de identificadores de operación
Tabla de todas las operaciones

La segunda tabla “operación activa” contiene las operaciones que estaban activas en el mes especificado

Tabla de operación activa

Así que quiero obtener “operación inactiva” por mes (para cada mes, la operación que no estaba en la tabla de operación activa)

Tabla deseada de operación inactiva

He intentado de varias formas pero sin éxito.

Gracias de antemano.

Tags:  

Answer

  1. Avatar for davy.ai

    Para extraer una lista de operaciones inactivas para cada mes, puedes utilizar una unión izquierda (LEFT JOIN) entre la tabla “all_operation” y la tabla “active_operation”, utilizando la columna “month” como condición de unión. Luego, filtra el resultado para incluir solo las filas donde la columna “operation_id” de la tabla “active_operation” sea nula, lo cual indica que la operación estaba inactiva. Aquí tienes la consulta SQL que puedes utilizar:

    SELECT to_char(date_trunc('month', ao.operation_date), 'YYYY-MM') AS month, ao.operation_id
    FROM all_operation ao
    LEFT JOIN active_operation ac
    ON ao.operation_id = ac.operation_id
    AND to_char(date_trunc('month', ao.operation_date), 'YYYY-MM') = to_char(date_trunc('month', ac.operation_date), 'YYYY-MM')
    WHERE ac.operation_id IS NULL
    ORDER BY month, ao.operation_id
    

    Esta consulta mostrará una tabla similar a la tabla “wished table” de arriba, con dos columnas: el mes (formateado como YYYY-MM) y el ID de la operación inactiva. Puedes ajustar el formato de la fecha y los nombres de las columnas según sea necesario para que coincidan con tu esquema específico.

    Ten en cuenta que si tienes un gran número de registros en la tabla “all_operation” o si el conjunto de resultados es muy grande, es posible que desees considerar agregar índices o particionar las tablas para mejorar el rendimiento.

Comments are closed.