Rapport du tableau de bord - Sujets

Ceci est une version SQL du rapport de tableau de bord pour les sujets.

Ce rapport fournit un décompte des nouveaux sujets créés quotidiennement dans une plage de dates spécifiée. Le rapport n’inclut pas les messages personnels, uniquement les sujets réguliers visibles sur le forum.

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

SELECT 
     p.created_at::date as day,
    COUNT(p.id) AS topics_created
FROM posts p
INNER JOIN topics t ON t.id = p.topic_id AND t.deleted_at ISNULL
WHERE p.created_at::date BETWEEN :start_date AND :end_date
    AND p.post_number = 1
    AND p.user_id > 0 
    AND p.deleted_at ISNULL
    AND t.archetype = 'regular'
GROUP BY p.created_at::date
ORDER BY p.created_at::date ASC

Explication de la requête SQL

La requête SQL effectue les actions suivantes :

  • Définition des paramètres : Elle accepte deux paramètres, :start_date et :end_date, qui définissent la plage de dates pour le rapport. Les deux paramètres de date acceptent le format AAAA-MM-JJ.
  • Sélection des données : La requête sélectionne la date de création des publications (p.created_at) et le nombre d’identifiants de publication (COUNT(p.id)) en tant que topics_created.
  • Jointures : Elle joint la table posts avec la table topics sur leurs champs id respectifs, en s’assurant que seuls les sujets non supprimés (t.deleted_at ISNULL) sont pris en compte.
  • Filtres : La requête filtre les publications pour inclure uniquement celles qui :
    • Ont été créées dans la plage de dates spécifiée (p.created_at::date BETWEEN :start_date AND :end_date).
    • Sont la première publication d’un sujet (p.post_number = 1), indiquant le début d’un nouveau sujet.
    • Ont été créées par des utilisateurs enregistrés (p.user_id > 0), excluant les publications système.
    • N’ont pas été supprimées (p.deleted_at ISNULL).
    • Appartiennent à des sujets de l’archétype « regular » (t.archetype = 'regular'), excluant les messages personnels.
  • Regroupement : Les résultats sont regroupés par la date de création des publications (p.created_at::date).
  • Tri : La sortie finale est triée par date de création dans l’ordre croissant (ORDER BY p.created_at::date ASC), fournissant une vue chronologique de la création de nouveaux sujets.

Résultats d’exemple

jour sujets_créés
2023-11-11 18
2023-11-12 10
2023-11-13 21
2023-11-14 19
2023-11-15 22
4 « J'aime »