Ceci est une version SQL du rapport de tableau de bord pour les publications.
Ce rapport fournit un décompte quotidien des publications créées dans une plage de dates spécifiée. Il est conçu pour suivre l’activité dans les sujets réguliers, en excluant les publications des messages privés et d’autres archétypes spéciaux.
--[params]
-- date :start_date
-- date :end_date
SELECT
p.created_at::date AS "Jour",
COUNT(p.id) AS "Nombre"
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.deleted_at ISNULL
AND t.archetype = 'regular'
AND p.post_type = 1
GROUP BY p.created_at::date
ORDER BY 1
Explication de la requête SQL
- Paramètres :
- La requête 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 format de dateAAAA-MM-JJ.
- La requête accepte deux paramètres,
La requête SQL effectue les opérations suivantes :
- Sélection des données :
- Elle sélectionne la date (
created_at::date) à laquelle chaque publication a été créée et la convertit au format date pour ignorer la composante horaire. - Elle compte également le nombre de publications (
COUNT(p.id)) créées chaque jour.
- Elle sélectionne la date (
- Jointures :
- La requête joint la table
postsà la tabletopicsà l’aide d’uneINNER JOIN. Cette jointure garantit que seules les publications associées à des sujets existants sont prises en compte. - Elle exclut les sujets qui ont été supprimés (
t.deleted_at ISNULL).
- La requête joint la table
- Filtres :
- Elle filtre les publications pour inclure uniquement celles comprises dans la plage de dates spécifiée (
p.created_at::date BETWEEN :start_date AND :end_date). - Elle exclut les publications supprimées (
p.deleted_at ISNULL). - Elle limite les résultats aux publications des sujets réguliers (
t.archetype = 'regular'). - Elle ne prend en compte que les publications de type
p.post_type = 1, excluant les actions de modération, les murmures et les petites actions.
- Elle filtre les publications pour inclure uniquement celles comprises dans la plage de dates spécifiée (
- Groupement et tri :
- Les résultats sont groupés par la date de création de la publication (
GROUP BY p.created_at::date). - La sortie finale est triée par date dans l’ordre croissant (
ORDER BY 1), où1fait référence à la première colonne de l’instructionSELECT, qui est la date.
- Les résultats sont groupés par la date de création de la publication (
Exemple de résultats
| Jour | Nombre |
|---|---|
| 2023-11-12 | 25 |
| 2023-11-13 | 35 |
| 2023-11-14 | 38 |
| 2023-11-15 | 47 |
| 2023-11-16 | 36 |
| 2023-11-17 | 79 |
| … | … |