Inscriptions hebdo/mensuelles/annuelles

:memo: Ces requêtes fournissent une ventilation du nombre de nouveaux comptes utilisateurs créés dans le délai imparti, à l’exclusion des comptes mis en scène et non activés. Les totaux sont ventilés par nombre d’inscriptions chaque semaine/mois/année, un total cumulé pour la période sélectionnée et un nombre total à ce jour qui inclut toutes les inscriptions précédentes.

NB : Si un utilisateur est supprimé, ses enregistrements n’apparaissent plus dans la base de données et ne seront donc plus inclus dans les résultats des requêtes. Cela peut entraîner des variations lors de la comparaison des exécutions récentes avec les précédentes.

Inscriptions hebdomadaires

-- [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 "Début de semaine",
    signups AS "Inscriptions hebdomadaires",
    SUM(signups::int) OVER (ORDER BY week) AS "Total cumulé",
    (SUM(signups::int) OVER (ORDER BY week) + previous::int) AS "Total général"
FROM weekly_signups, all_to_date
ORDER BY week ASC
Début de semaine Inscriptions hebdomadaires Total cumulé Total général
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

Inscriptions mensuelles

-- [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 "Mois",
    signups AS "Inscriptions mensuelles",
    SUM(signups::int) OVER (ORDER BY month) AS "Total cumulé",
    (SUM(signups::int) OVER (ORDER BY month) + previous::int) AS "Total général"
FROM monthly_signups, all_to_date
ORDER BY month
Mois Inscriptions mensuelles Total cumulé Total général
Juin 2023 596 596 44790
Juillet 2023 517 1113 45307
Août 2023 583 1696 45890
Septembre 2023 102 1798 46005

Inscriptions annuelles

-- [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 "Année",
    signups AS "Inscriptions annuelles",
    SUM(signups::int) OVER (ORDER BY year) AS "Total cumulé",
    (SUM(signups::int) OVER (ORDER BY year) + previous::int) AS "Total général"
FROM yearly_signups, all_to_date
ORDER BY year ASC
Année Inscriptions annuelles Total cumulé Total général
2019 3590 3590 23135
2020 4258 7848 27393
2021 5908 13756 33301
2022 7889 21645 41190
2023 4815 26460 46005
10 « J'aime »

Bonjour, désolé d’être si obtus sur le fonctionnement, mais à quoi ressemble un de ces exemples lorsque les dates sont remplies ?

Je ne suis pas sûr de comprendre ce que vous voulez dire ? Il y a un exemple des résultats sous chacun, si c’est ce que vous cherchez ?

1 « J'aime »

Compris.

Voici ce que j’essaie de demander : Où dans le code lui-même dois-je mettre ma date de début et de fin, et dans quel format dois-je l’écrire ?

[quote=“Carson, post:5, topic:278119, username:outofthebox”]
Où dans le code lui-même dois-je mettre ma date de début et de fin ?
[/quote]Vous ne le faites pas, car il devrait ajouter des zones de saisie au-dessus du bouton pour exécuter la requête (sinon, actualisez après avoir enregistré et elles apparaîtront), puis

[quote=“Carson, post:5, topic:278119, username:outofthebox”]
et dans quel format dois-je l’écrire ?
[/quote]Je pense qu’il vous donnera simplement un sélecteur de date.

2 « J'aime »

Ah, oui. Il existe un problème connu où les zones de saisie des paramètres ne s’affichent pas la première fois avant un actualisation de page.

Ce n’est pas encore assez sophistiqué pour avoir un sélecteur de date (bien qu’il faille l’espérer :slight_smile: :crossed_fingers:), mais je pense qu’il est assez tolérant quant au format. J’utilise le format de date britannique (par exemple, 21/01/2024) lorsque je l’utilise moi-même, mais lorsque je partage des exemples d’images, j’essaie de m’en tenir à, par exemple, 2024-01-21 car il est plus universel.

3 « J'aime »

Compris maintenant. Merci. J’avais besoin de rafraîchir la page.

1 « J'aime »