PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да създадете общ период на текущия период

Познаването на текущия общ брой посещения или потребители или дейности за непрекъснат период от време е добър начин да анализирате ефективността на вашия уебсайт или приложение. Думата за търсене „12-месечен подвижен отчет“ има над 12 милиона резултата от търсенето и експертите смятат, че подвижният отчет е един от най-добрите начини за показване на тенденции. Заместването на период от време с годишен или 12-месечен изглед, в зависимост от вашия случай на употреба, е също толкова проницателен.

Например, анализирането на ежедневните тенденции на посетителите на уебсайта за период от шест месеца може да покаже ценна информация, но не показва тенденции за по-малки периоди от време в обхвата на диаграмата. Ще покаже само общата тенденция.

Ако искате да получите прозрения за идентифициране на периоди на растеж или спад, анализът на подвижната тенденция може да ви помогне да идентифицирате тези периоди. Диаграмата по-долу показва същите данни, които се виждат по-горе, подредени на дневен интервал, във формат на подвижен 7-дневен тренд.

С този подвижен изглед за 7-дневен период можете да видите повече от просто общата тенденция, наблюдавана в дневната обща линейна диаграма. Тук можете да видите микротенденции в рамките на цялостното изживяване, което може да разкрие много по-проницателна информация за вашата организация. В нашия пример тук можем да видим, че общата тенденция на посетителите по ден е нагоре в първата ни графика, но втората ни разкрива последователни 7 периода в рамките на общата ни тенденция, които имат посока надолу. Този вид прозрение може да ни помогне да идентифицираме периоди на низходяща тенденция, която може да съвпадне с маркетингови усилия, които са дали резултат, или не.

Заявката

За да изградим тази заявка, ще искаме да знаем няколко неща:

  1. Тягащият период. Пример 12 месеца, 30 дни или 7 дни. В нашия случай:7 дни.
  2. Показателят, който анализираме:посетители на ден.

Заявката ще бъде съставена от различни подзаявки. Първо, използвайте generate_series, за да присвоите редове в таблица за всички дати в период от дати от началото до края на периода от време в колоната visits.created_date, която ще бъде извикана в главния оператор SELECT. Тази подзаявка ще служи като таблица, от която ще избираме.

Втора подзаявка ще влезе в основния раздел и ще върне броя на всички уникални посетители, посетили нашия сайт за период от 7 дни. Тази подзаявка ще служи като собствена колона в основната заявка и ще отчита отделните посетители от „деня“ до 7 дни преди „деня“.

Обединявайки всичко това, можем да генерираме подвижна тенденция на нашия посетител на ден за период от 7 дни:

    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

Тестване на математиката. Можем да тестваме математиката тук в следващата таблица. Вижте стъпките на изоставане, които присвояват предишните 7 дни на колоната Брой и колоната Общо, която ще се равнява на колоната Посетители.

След като нашата математика е потвърдена, можем да се доверим на тази функция, за да ни даде обща представа за текущите суми на текущите периоди. Горната заявка може да бъде коригирана, за да показва различни периоди от време в зависимост от вашия случай на употреба.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете броя на записите, засегнати от INSERT или UPDATE в PostgreSQL

  2. Как мога да генерирам уникален низ за запис в таблица в Postgres?

  3. Хибернация, Postgresql:Колона x е от тип oid, но изразът е от тип байт

  4. PostgreSQL отмяна на разрешения от pg_catalog таблици

  5. как да коригирате OperationalError:(psycopg2.OperationalError) сървърът затвори връзката неочаквано