sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo crear un total acumulado del período móvil

Conocer el total acumulado de visitas, usuarios o actividades durante un período de tiempo continuo es una buena manera de analizar el rendimiento de su sitio web o aplicación. El término de búsqueda "Informe continuo de 12 meses" tiene más de 12 millones de resultados de búsqueda, y los expertos creen que el informe continuo es una de las mejores formas de mostrar tendencias. Sustituir su período de tiempo por una vista anual o de 12 meses, según su caso de uso, es igual de útil.

Por ejemplo, el análisis de las tendencias diarias de los visitantes del sitio web durante un período de seis meses puede mostrar información valiosa, pero no muestra las tendencias durante períodos de tiempo más pequeños dentro del alcance del gráfico. Solo mostrará la tendencia general.

Si está buscando obtener información para identificar períodos de crecimiento o declive, un análisis de tendencias puede ayudarlo a identificar estos períodos. El siguiente gráfico muestra los mismos datos que se ven arriba, ordenados en un intervalo diario, en un formato de tendencia móvil de 7 días.

Con esta vista continua de período de 7 días, puede ver más que solo la tendencia general que se ve en el gráfico de líneas totales diarias. Aquí puede ver microtendencias dentro de la experiencia general que pueden revelar información mucho más detallada para su organización. En nuestro ejemplo aquí, podemos ver que la tendencia general de visitantes por día es ascendente en nuestro primer gráfico, pero nuestro segundo muestra 7 períodos consecutivos dentro de nuestra tendencia general que tienen una dirección descendente. Este tipo de información puede ayudarnos a identificar períodos de tendencia a la baja que podrían coincidir con esfuerzos de marketing que funcionaron o no.

La Consulta

Para construir esta consulta, querremos saber algunas cosas:

  1. El período de rodadura. Ejemplo 12 meses, 30 días o 7 días. En nuestro caso:7 Días.
  2. La métrica que estamos analizando:visitantes por día.

La consulta estará compuesta por diferentes subconsultas. Primero, use generate_series para asignar filas en una tabla para todas las fechas en un intervalo de fechas desde el principio hasta el final del intervalo de fechas en la columna visitor.created_date, que se invocará en la instrucción SELECT principal. Esta subconsulta servirá como la tabla de la que seleccionaremos.

Una segunda subconsulta irá a la sección principal y devolverá el recuento de todos los visitantes únicos que visitaron nuestro sitio en un período de 7 días. Esta subconsulta servirá como su propia columna en la consulta principal y contará los distintos visitantes desde el "día" hasta los 7 días anteriores al "día".

Poniendo todo junto, podemos generar una tendencia continua de nuestro visitante por día en un período de 7 días:

    SELECT
        day,
        (
          SELECT
              COUNT(DISTINCT "Visitors"."visitor_id") AS "Visitors"
          FROM
              "public"."visitors" AS "Visitors"
          WHERE  
              "Visitors"."created_date" BETWEEN b.day - 7 AND b.day + 1
        )
    FROM  (SELECT
            generate_series(
                            MIN(DATE_TRUNC('day', "Visitors"."created_date")::DATE),
                            MAX(DATE_TRUNC('day', "Visitors"."created_date")::DATE),
                            '1d')::date as day
            FROM "public"."visitors" AS "Visitors"
          ) as b
    GROUP BY day                        
    ORDER BY day

Probando las matemáticas. Podemos probar las matemáticas aquí en la siguiente tabla. Vea los pasos de retraso que asignan los 7 días anteriores a la columna Recuento y la columna total que será igual a la Columna de visitantes.

Con nuestras matemáticas confirmadas, podemos confiar en que esta función nos dará una visión general de los totales acumulados de los períodos móviles. La consulta anterior se puede ajustar para mostrar diferentes períodos de tiempo según su caso de uso.