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

Sådan opretter du en løbende periode i alt

At kende den løbende sum af besøg eller brugere eller aktiviteter over en rullende periode er en god måde at analysere dit websites eller apps ydeevne på. Søgeudtrykket "12 måneders rullende rapport" har over 12 millioner søgeresultater, og eksperter mener, at den rullende rapport er en af ​​de bedste måder at vise tendenser på. At erstatte din tidsperiode med en årlig eller 12 måneders visning, afhængigt af din brugssituation, er lige så indsigtsfuldt.

For eksempel kan en analyse af daglige websitebesøgende tendenser over en seks måneders periode vise værdifuld information, men den viser ikke tendenser over mindre tidsperioder inden for diagrammets rækkevidde. Det vil kun vise den overordnede tendens.

Hvis du søger at få indsigt i at identificere perioder med vækst eller tilbagegang, kan en rullende trendanalyse hjælpe dig med at identificere disse perioder. Diagrammet nedenfor viser de samme data som ovenfor, opstillet i et dagligt interval, i et rullende 7-dages trendformat.

Med denne 7-dages periode rullende visning kan du se mere end blot den overordnede tendens, der ses i det daglige samlede linjediagram. Her kan du se mikrotrends inden for den samlede oplevelse, som kan afsløre meget mere indsigtsfuld information for din organisation. I vores eksempel her kan vi se, at den overordnede tendens for besøgende om dagen er opad i vores første diagram, men vores anden afslører på hinanden følgende 7 perioder inden for vores overordnede tendens, der har en nedadgående retning. Denne form for indsigt kan hjælpe os med at identificere perioder med nedadgående tendens, der kan falde sammen med marketingindsats, der enten virkede eller ikke gjorde.

Forespørgslen

For at bygge denne forespørgsel vil vi gerne vide et par ting:

  1. Den rullende periode. Eksempel 12 måneder, 30 dage eller 7 dage. I vores tilfælde:7 dage.
  2. Metricen, vi analyserer:besøgende pr. dag.

Forespørgslen vil være sammensat af forskellige underforespørgsler. Først skal du bruge gener_series til at tildele rækker i en tabel for alle datoer i et datospænd fra begyndelsen til slutningen af ​​datospændet i kolonnen visitors.created_date, som vil blive kaldt i SELECT-hovedsætningen. Denne underforespørgsel vil fungere som den tabel, vi vælger fra.

En anden underforespørgsel vil gå i hovedsektionen og returnere antallet af alle de unikke besøgende, der besøgte vores websted i en 7-dages periode. Denne underforespørgsel fungerer som sin egen kolonne i hovedforespørgslen og tæller de forskellige besøgende fra "dagen" til 7 dage før "dagen".

Ved at sætte det hele sammen kan vi generere en rullende trend for vores besøgende pr. dag i en 7-dages periode:

    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

Tester matematikken. Vi kan teste matematikken her i følgende tabel. Se forsinkelsestrinene, der tildeler de foregående 7 dage til kolonnen Antal, og den samlede kolonne, der svarer til kolonnen Besøgende.

Med vores matematik bekræftet, kan vi stole på, at denne funktion giver os et samlet overblik over løbende totaler af rullende perioder. Ovenstående forespørgsel kan justeres til at vise forskellige tidsperioder afhængigt af din brugssituation.


  1. Tip til XML-ydelse

  2. Oversigt over datakomprimering i SQL Server

  3. MariaDB JSON_CONTAINS_PATH() Forklaret

  4. Understøttelse af MariaDB 10.4 i opgraderet dbForge Studio til MySQL, v.8.1