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.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener el resultado deseado, debemos incluir todas las fechas dentro del rango dado, incluso si no hay vistas en esas fechas. Para ello, podemos utilizar una tabla de fechas o generar una serie de fechas dentro del rango dado.

    Aquí hay un ejemplo de consulta que genera una serie de fechas utilizando la función generate_series() y luego la une con la tabla videoView para obtener el resultado deseado:

    SELECT COALESCE(SUM("videoView"."views"), 0) AS suma,
           dates.date AS fecha
    FROM (SELECT date::date
          FROM generate_series('2021/11/25'::timestamp,
                                '2021/11/28'::timestamp,
                                '1 day'::interval) AS date) AS dates
    LEFT JOIN "videoView" ON "videoView"."startDate"::timestamp::date = dates.date
    WHERE "videoView"."videoId" = 23 OR "videoView"."videoId" IS NULL
    GROUP BY dates.date
    ORDER BY dates.date
    

    En esta consulta, primero generamos una serie de fechas entre ‘2021/11/25’ y ‘2021/11/28’. Luego, unimos esta tabla de fechas con la tabla videoView en la columna startDate convertida al formato de fecha. La función COALESCE se utiliza para reemplazar los valores NULL por 0.

    La cláusula WHERE incluye una condición para filtrar los resultados para el videoID específico y también incluye filas donde no hay vistas, representadas por valores NULL. Finalmente, el resultado se agrupa por la columna de fecha y se ordena de forma ascendente.

    Con esta consulta, deberíamos obtener el resultado deseado que incluye todas las fechas dentro del rango, independientemente de si hay vistas en esas fechas o no.

Comments are closed.