sql >> Databáze >  >> RDS >> PostgreSQL

Jak vytvořit průběžný celkový součet klouzavého období

Znalost průběžného součtu návštěv nebo uživatelů nebo aktivit za klouzavé časové období je dobrý způsob, jak analyzovat výkon vašeho webu nebo aplikace. Hledaný výraz „12měsíční průběžná zpráva“ má více než 12 milionů výsledků vyhledávání a odborníci se domnívají, že průběžná zpráva je jedním z nejlepších způsobů, jak ukázat trendy. Nahrazení časového období ročním nebo 12měsíčním zobrazením v závislosti na vašem případu použití je stejně užitečné.

Například analýza denních trendů návštěvnosti webu za šestiměsíční časové období může ukázat cenné informace, ale neukazuje trendy za kratší časová období v rozsahu grafu. Ukáže pouze celkový trend.

Pokud hledáte statistiky k identifikaci období růstu nebo poklesu, může vám tato období pomoci identifikovat analýza průběžných trendů. Níže uvedený graf ukazuje stejná data jako výše, seřazená v denním intervalu, v klouzavém 7denním trendovém formátu.

Pomocí tohoto rolujícího zobrazení 7denního období můžete vidět více než jen celkový trend v denním celkovém spojnicovém grafu. Zde můžete vidět mikrotrendy v rámci celkové zkušenosti, které mohou odhalit mnohem pronikavější informace pro vaši organizaci. V našem příkladu zde vidíme, že celkový trend návštěvníků za den je v našem prvním grafu nahoru, ale náš druhý odhaluje po sobě jdoucích 7 období v rámci našeho celkového trendu, která mají klesající směr. Tento druh náhledu nám může pomoci identifikovat období sestupného trendu, která se mohou shodovat s marketingovým úsilím, které buď fungovalo, nebo ne.

Dotaz

Abychom vytvořili tento dotaz, budeme chtít vědět několik věcí:

  1. Klouzavé období. Příklad 12 měsíců, 30 dní nebo 7 dní. V našem případě:7 dní.
  2. Metrika, kterou analyzujeme:návštěvníci za den.

Dotaz bude složen z různých poddotazů. Nejprve použijte generovat_series k přiřazení řádků v tabulce pro všechna data v časovém období od začátku do konce časového rozpětí ve sloupci visits.created_date, který bude vyvolán v hlavním příkazu SELECT. Tento dílčí dotaz bude sloužit jako tabulka, ze které budeme vybírat.

Druhý dílčí dotaz přejde do hlavní sekce a vrátí počet všech unikátních návštěvníků, kteří navštívili naše stránky během 7 dnů. Tento dílčí dotaz bude sloužit jako vlastní sloupec v hlavním dotazu a bude počítat jednotlivé návštěvníky od „dne“ do 7 dní před „dnem“.

Když to dáme dohromady, můžeme vygenerovat klouzavý trend návštěvnosti za den v období 7 dnů:

    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

Testování matematiky. Matematiku si můžeme otestovat zde v následující tabulce. Podívejte se na kroky prodlevy, které přiřazují předchozích 7 dní ke sloupci Počet, a sloupec celkem, který se bude rovnat sloupci Návštěvníci.

S naší potvrzenou matematikou můžeme této funkci důvěřovat, že nám poskytne celkový přehled o průběžných součtech klouzavých období. Výše uvedený dotaz lze upravit tak, aby zobrazoval různá časová období v závislosti na vašem případu použití.


  1. Jak se spouštějí paralelní plány – část 4

  2. Funkce TZ_OFFSET() v Oracle

  3. SQL Server 2016:Vytvořte tabulku ze skriptu SQL

  4. Indexy založené na funkcích v SQL Server