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.

Cómo seleccionar clientes con pedidos antes de una fecha específica

Tengo dos tablas.

Tabla ‘customers’: customer_id, date_register, name

Tabla ‘orders’: order_id, customer_id, order_date

Ahora quiero los clientes que tienen pedidos antes de una fecha específica y NO tienen después de esa fecha.

Estoy utilizando esta consulta:

SELECT customer_id
FROM orders
WHERE EXISTS (SELECT order_id
FROM orders
WHERE order_date <= ‘2020-05-12 23:59:59’)
AND NOT EXISTS (SELECT order_id
FROM orders
WHERE order_date > ‘2020-05-12 23:59:59’)

Pero obtengo un resultado vacío.

¿Qué consulta SQL debo utilizar?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en MySQL, aquí hay una consulta SQL alternativa que debería devolver los resultados deseados:

    SELECT c.customer_id
    FROM customers c
    INNER JOIN orders o ON c.customer_id = o.customer_id
    GROUP BY c.customer_id
    HAVING MAX(o.order_date) <= '2020-05-12 23:59:59'
    

    Esta consulta utiliza una unión interna entre las tablas customers y orders para vincular los datos de los clientes con sus pedidos. Luego, agrupa los resultados por el ID del cliente y utiliza la función MAX() para encontrar la fecha del pedido más reciente para cada cliente. Finalmente, la cláusula HAVING filtra los resultados para incluir solo aquellos clientes cuyo pedido más reciente fue en o antes de la fecha específica.

    Ten en cuenta que esta consulta asume que todos los clientes tienen al menos un pedido. Si hay clientes que nunca han realizado un pedido, no se incluirán en el conjunto de resultados.

Comments are closed.