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.

Incluya cero conteos para la agrupación en consultas SQL basadas en rangos de fechas.

Estoy intentando agrupar y ordenar el número de ventas realizadas cada día desde una única tabla de ‘ventas’ con una columna de ‘created_at’ y una columna de ‘id’. Cada uno de los registros puede ser creado en cualquier momento a lo largo del día. He logrado hacer esto con la siguiente consulta:

SELECT date_trunc(‘day’, created_at::date) AS periodo, COUNT(id)
FROM sales
GROUP BY periodo
ORDER BY periodo

Sin embargo, los días con 0 ventas no aparecen. ¿Alguna idea?
La mayoría de las respuestas que he encontrado usan LEFT JOIN, pero parece que no puedo hacer que funcione, así que puede que no esté entendiendo cómo usarlo. 🙁

¡Gracias de antemano!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puede utilizar un LEFT JOIN para obtener los días con 0 ventas. Puede utilizar una tabla de calendar para unirse a la tabla de ventas. La tabla de calendar debe tener una columna de date con todas las fechas que desea consultar.

    La consulta se vería algo como esto:


    SELECT c.date AS periodo, COUNT(s.id)
    FROM calendar c
    LEFT JOIN sales s ON date_trunc('day', s.created_at::date) = c.date
    GROUP BY c.date
    ORDER BY c.date

Comments are closed.