Iscrizioni Settimanali/Mensili/Annuali

:memo: Queste query forniscono una ripartizione di quanti nuovi account utente sono stati creati nel periodo di tempo specificato, escludendo gli account in staging e non attivati. I totali sono suddivisi per numero di iscrizioni ogni settimana/mese/anno, un totale progressivo per il periodo selezionato e un numero totale fino ad oggi che include tutte le iscrizioni precedenti.

NB: Se un utente viene eliminato, i suoi dati non appaiono più nel database e quindi non saranno più inclusi nei risultati delle query. Ciò può portare a variazioni quando si confrontano esecuzioni recenti con quelle precedenti.

Iscrizioni Settimanali

-- [params]
-- date :start_date
-- date :end_date

WITH weekly_signups AS (

SELECT
    to_char(date_trunc('week', created_at)::date,'YYYY-MM-DD') AS week,
    COUNT(*) AS signups
FROM users
WHERE created_at::date BETWEEN :start_date::date AND :end_date::date
  AND staged = false
  AND active = true
GROUP BY week
),

all_to_date AS (

SELECT COUNT(*) AS previous
FROM users
WHERE created_at::date < :start_date
  AND staged = false
  AND active = true

)

SELECT
    week AS "Inizio Settimana",
    signups AS "Iscrizioni Settimanali",
    SUM(signups::int) OVER (ORDER BY week) AS "Totale Progressivo",
    (SUM(signups::int) OVER (ORDER BY week) + previous::int) AS "Totale Complessivo"
FROM weekly_signups, all_to_date
ORDER BY week ASC
Inizio Settimana Iscrizioni Settimanali Totale Progressivo Totale Complessivo
2023-07-31 98 98 45418
2023-08-07 141 239 45559
2023-08-14 129 368 45688
2023-08-21 126 494 45814
2023-08-28 138 632 45952
2023-09-04 53 685 46005

Iscrizioni Mensili

-- [params]
-- date :start_date
-- date :end_date

WITH monthly_signups AS (
SELECT
    date_trunc('month', created_at)::date AS month,
    to_char(date_trunc('month', created_at)::date,'Month YYYY') AS month_display,
    COUNT(*) AS signups
FROM users
WHERE created_at::date BETWEEN :start_date::date AND :end_date::date
  AND staged = false
  AND active = true
GROUP BY month, month_display
),

all_to_date AS (
SELECT COUNT(*) AS previous
FROM users
WHERE created_at::date < :start_date
  AND staged = false
  AND active = true
)

SELECT
    month_display AS "Mese",
    signups AS "Iscrizioni Mensili",
    SUM(signups::int) OVER (ORDER BY month) AS "Totale Progressivo",
    (SUM(signups::int) OVER (ORDER BY month) + previous::int) AS "Totale Complessivo"
FROM monthly_signups, all_to_date
ORDER BY month
Mese Iscrizioni Mensili Totale Progressivo Totale Complessivo
June 2023 596 596 44790
July 2023 517 1113 45307
August 2023 583 1696 45890
September 2023 102 1798 46005

Iscrizioni Annuali

-- [params]
-- date :start_date
-- date :end_date

WITH yearly_signups AS (

SELECT
    to_char(date_trunc('year', created_at)::date,'YYYY') AS year,
    COUNT(*) AS signups
FROM users
WHERE created_at::date BETWEEN :start_date::date AND :end_date::date
  AND staged = false
  AND active = true
GROUP BY year
),

all_to_date AS (

SELECT COUNT(*) AS previous
FROM users
WHERE created_at::date < :start_date
  AND staged = false
  AND active = true

)

SELECT
    year AS "Anno",
    signups AS "Iscrizioni Annuali",
    SUM(signups::int) OVER (ORDER BY year) AS "Totale Progressivo",
    (SUM(signups::int) OVER (ORDER BY year) + previous::int) AS "Totale Complessivo"
FROM yearly_signups, all_to_date
ORDER BY year ASC
Anno Iscrizioni Annuali Totale Progressivo Totale Complessivo
2019 3590 3590 23135
2020 4258 7848 27393
2021 5908 13756 33301
2022 7889 21645 41190
2023 4815 26460 46005
10 Mi Piace

Ciao, mi scuso per essere stato così ottuso su come funziona, ma come si presenta uno di questi esempi quando le date sono compilate?

Non sono sicuro di cosa intendi? C’è un esempio dei risultati sotto ciascuno, se è quello che stai cercando?

1 Mi Piace

Capito.

Ecco cosa sto cercando di chiedere: dove nel codice stesso inserisco la mia data di inizio e fine, e in quale formato devo scriverla?

[quote=“Carson, post:5, topic:278119, username:outofthebox”]
Dove nel codice stesso metto la mia data di inizio e fine?
[/quote]Non lo fai, poiché dovrebbe aggiungere caselle di input sopra il pulsante per eseguire la query (in caso contrario, aggiorna dopo aver salvato e appariranno), quindi

[quote=“Carson, post:5, topic:278119, username:outofthebox”]
e in che formato lo scrivo?
[/quote]Penso che ti darà semplicemente un selettore di date.

2 Mi Piace

Ah, sì. Esiste un problema noto per cui le caselle di immissione dei parametri non vengono visualizzate la prima volta finché non si aggiorna la pagina.

Non è ancora abbastanza “swish” da avere un selettore di date (anche se si spera :slight_smile: :crossed_fingers:), ma penso che sia abbastanza flessibile riguardo al formato. Io uso il formato data del Regno Unito (ad esempio 21/01/2024) quando lo uso, ma quando condivido esempi di screenshot cerco di attenermi al formato ad esempio 2024-01-21 poiché è più universale.

3 Mi Piace

Capito ora. Grazie. Avevo bisogno dell’aggiornamento della pagina.

1 Mi Piace