Inscrições Semanais/Mensais/Anuais

:memo: Estas consultas fornecem um detalhamento de quantas novas contas de usuário foram criadas dentro do período de tempo, excluindo contas em estágio e não ativadas. Os totais são divididos pelo número de cadastros a cada semana/mês/ano, um total acumulado para o período selecionado e um número total até o momento, que inclui todos os cadastros anteriores.

NB: Se um usuário for excluído, seus registros não aparecerão mais no banco de dados e, portanto, não serão mais incluídos nos resultados da consulta. Isso pode levar a variações ao comparar execuções recentes com as anteriores.

Cadastros Semanais

-- [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 "Início da Semana",
    signups AS "Cadastros Semanais",
    SUM(signups::int) OVER (ORDER BY week) AS "Total Acumulado",
    (SUM(signups::int) OVER (ORDER BY week) + previous::int) AS "Total Geral"
FROM weekly_signups, all_to_date
ORDER BY week ASC
Início da Semana Cadastros Semanais Total Acumulado Total Geral
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

Cadastros Mensais

-- [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 "Mês",
    signups AS "Cadastros Mensais",
    SUM(signups::int) OVER (ORDER BY month) AS "Total Acumulado",
    (SUM(signups::int) OVER (ORDER BY month) + previous::int) AS "Total Geral"
FROM monthly_signups, all_to_date
ORDER BY month
Mês Cadastros Mensais Total Acumulado Total Geral
Junho 2023 596 596 44790
Julho 2023 517 1113 45307
Agosto 2023 583 1696 45890
Setembro 2023 102 1798 46005

Cadastros Anuais

-- [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 "Ano",
    signups AS "Cadastros Anuais",
    SUM(signups::int) OVER (ORDER BY year) AS "Total Acumulado",
    (SUM(signups::int) OVER (ORDER BY year) + previous::int) AS "Total Geral"
FROM yearly_signups, all_to_date
ORDER BY year ASC
Ano Cadastros Anuais Total Acumulado Total Geral
2019 3590 3590 23135
2020 4258 7848 27393
2021 5908 13756 33301
2022 7889 21645 41190
2023 4815 26460 46005
10 curtidas

Oi, desculpe por ser tão obtuso sobre como isso funciona, mas como fica um desses exemplos com as datas preenchidas?

Não tenho certeza do que você quer dizer? Há um exemplo dos resultados abaixo de cada um, se é isso que você está procurando?

1 curtida

Entendido.

É isto que estou a tentar perguntar: Onde no próprio código devo colocar a minha data de início e fim, e em que formato devo escrevê-la?

[quote=“Carson, post:5, topic:278119, username:outofthebox”]
Onde no código em si eu coloco minha data de início e fim?
[/quote]Você não, pois ele deve adicionar caixas de entrada acima do botão para executar a consulta (se não, atualize após salvar e elas aparecerão), então

[quote=“Carson, post:5, topic:278119, username:outofthebox”]
e em que formato eu escrevo?
[/quote]Eu acho que ele apenas lhe dará um seletor de data.

2 curtidas

Ah, sim. Existe um problema conhecido em que as caixas de entrada de parâmetros não aparecem na primeira vez até depois de atualizar a página.

Ainda não é muito elegante ter um seletor de data (embora haja esperança :slight_smile: :crossed_fingers:), mas acho que é bastante flexível quanto ao formato. Eu uso o formato de data do Reino Unido (por exemplo, 21/01/2024) quando o uso, mas quando compartilho exemplos de capturas de tela, tento me ater a, por exemplo, 2024-01-21, pois é mais universal.

3 curtidas

Entendi agora. Obrigado. Precisava atualizar a página.

1 curtida