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_dateet:end_date, qui définissent la plage de dates pour le rapport. Les deux paramètres de date acceptent le formatAAAA-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 quetopics_created. - Jointures : Elle joint la table
postsavec la tabletopicssur leurs champsidrespectifs, 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.
- Ont été créées dans la plage de dates spécifiée (
- 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 |
| … | … |