PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come creare un totale parziale del periodo mobile

Conoscere il totale parziale delle visite, degli utenti o delle attività in un periodo di tempo variabile è un buon modo per analizzare le prestazioni del tuo sito web o della tua app. Il termine di ricerca "Rapporto a rotazione di 12 mesi" ha oltre 12 milioni di risultati di ricerca e gli esperti ritengono che il rapporto a rotazione sia uno dei modi migliori per mostrare le tendenze. Sostituire il periodo di tempo con una visualizzazione annuale o di 12 mesi, a seconda del caso d'uso, è altrettanto utile.

Ad esempio, l'analisi delle tendenze giornaliere dei visitatori del sito Web in un periodo di sei mesi può mostrare informazioni preziose, ma non mostra le tendenze in periodi di tempo più brevi nell'ambito del grafico. Mostrerà solo la tendenza generale.

Se stai cercando informazioni dettagliate per identificare i periodi di crescita o di declino, un'analisi delle tendenze in movimento può aiutarti a identificare questi periodi. Il grafico seguente mostra gli stessi dati visti sopra, disposti su un intervallo giornaliero, in un formato di tendenza a 7 giorni a rotazione.

Con questa visualizzazione a rotazione del periodo di 7 giorni puoi vedere molto di più della semplice tendenza generale vista nel grafico a linee del totale giornaliero. Qui puoi vedere i micro-trend all'interno dell'esperienza complessiva che possono rivelare informazioni molto più approfondite per la tua organizzazione. Nel nostro esempio qui possiamo vedere che la tendenza generale dei visitatori di giorno è in rialzo nel nostro primo grafico, ma il nostro secondo rivela 7 periodi consecutivi all'interno della nostra tendenza generale che hanno una direzione al ribasso. Questo tipo di informazioni può aiutarci a identificare i periodi di tendenza al ribasso che potrebbero coincidere con gli sforzi di marketing che hanno funzionato o meno.

La query

Per costruire questa query vorremo sapere alcune cose:

  1. Il periodo di rotazione. Esempio 12 mesi, 30 giorni o 7 giorni. Nel nostro caso:7 giorni.
  2. La metrica che stiamo analizzando:visitatori al giorno.

La query sarà composta da diverse sottoquery. Innanzitutto, usa generate_series per assegnare righe in una tabella per tutte le date in un intervallo di date dall'inizio alla fine dell'intervallo di date nella colonna Visitors.created_date, che verrà richiamata nell'istruzione SELECT principale. Questa sottoquery servirà come tabella da cui selezioneremo.

Una seconda sottoquery andrà nella sezione principale e restituirà il conteggio di tutti i visitatori unici che hanno visitato il nostro sito in un periodo di 7 giorni. Questa sottoquery fungerà da colonna a sé stante nella query principale e conteggerà i visitatori distinti dal "giorno" a 7 giorni prima del "giorno".

Mettendo tutto insieme, possiamo generare una tendenza continua del nostro Visitatore al giorno in un periodo di 7 giorni:

    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

Testare la matematica. Possiamo testare la matematica qui nella tabella seguente. Guarda i passaggi di ritardo che assegnano i 7 giorni precedenti alla colonna Conteggio e la colonna totale che sarà uguale alla Colonna Visitatori.

Con la nostra matematica confermata, possiamo fidarci di questa funzione per darci una visione generale dei totali parziali dei periodi mobili. La query di cui sopra può essere modificata per mostrare periodi di tempo diversi a seconda del tuo caso d'uso.