Ceci est une version SQL du rapport de tableau de bord pour les visites d’utilisateurs et les visites d’utilisateurs (mobiles).
Ce rapport de tableau de bord fournit des informations sur l’engagement des utilisateurs en suivant les visites quotidiennes des utilisateurs. Les administrateurs peuvent filtrer les données en fonction de la plage de dates, de l’appartenance à un groupe et du type d’appareil (mobile ou non mobile).
Comprendre les modèles de visites des utilisateurs peut aider les administrateurs à prendre des décisions éclairées pour améliorer l’engagement des utilisateurs et la santé de la communauté.
-- [params]
-- date :start_date = 2024-01-06
-- date :end_date = 2024-02-07
-- null text :group_name
-- boolean :mobile_views = false
SELECT uv.visited_at AS date,
COUNT(DISTINCT uv.user_id) AS visits_count
FROM user_visits uv
LEFT JOIN group_users gu ON gu.user_id = uv.user_id
LEFT JOIN groups g ON g.id = gu.group_id AND (:group_name IS NULL OR g.name = :group_name)
WHERE uv.visited_at BETWEEN :start_date AND :end_date
AND (:group_name IS NULL OR g.name IS NOT NULL)
AND (:mobile_views = false OR uv.mobile = true)
GROUP BY uv.visited_at
ORDER BY uv.visited_at ASC
Explication de la requête SQL
La requête SQL fonctionne en sélectionnant des données de la table user_visits, qui enregistre chaque visite d’un utilisateur sur la plateforme. Les principaux composants de la requête sont expliqués ci-dessous :
- Paramètres
:start_dateet:end_datedéfinissent la plage de dates pour le rapport. Les deux paramètres de date acceptent le format de dateAAAA-MM-JJ.:group_namepermet de filtrer par le nom d’un groupe d’utilisateurs spécifique. S’il n’est pas spécifié, les données de tous les groupes sont incluses.:mobile_viewsdétermine s’il faut inclure uniquement les visites sur appareils mobiles (true) ou toutes les visites (false).
- Sélection de données et opérations de jointure :
- La requête sélectionne la date de visite (
visited_at) et compte les identifiants d’utilisateur distincts (user_id) pour calculer le nombre de visites uniques par jour. - Elle effectue une
LEFT JOINavec la tablegroup_userspour associer les visites des utilisateurs à leurs groupes respectifs, suivie d’une autreLEFT JOINavec la tablegroupspour filtrer par le nom de groupe spécifié, le cas échéant.
- La requête sélectionne la date de visite (
- Filtrage :
- La clause
WHEREapplique des filtres basés sur les paramètres d’entrée :- Elle garantit que seules les visites dans la plage de dates spécifiée sont incluses.
- Elle filtre par nom de groupe si spécifié, et garantit que les visites sont comptées pour les utilisateurs appartenant à ce groupe.
- Elle inclut uniquement les visites mobiles si le paramètre
:mobile_viewsest défini surtrue.
- La clause
- Regroupement et tri :
- La requête regroupe les résultats par date de visite (
visited_at) pour agréger les décomptes de visites par jour. - Elle trie les résultats par ordre croissant de date, fournissant une vue chronologique des visites des utilisateurs.
- La requête regroupe les résultats par date de visite (
Exemple de résultats
| date | visits_count |
|---|---|
| 2024-01-06 | 67 |
| 2024-01-07 | 71 |
| 2024-01-08 | 88 |
| 2024-01-09 | 79 |
| 2024-01-10 | 78 |
| … | … |