Maison >base de données >tutoriel mysql >Comment générer une plage de dates complète dans MySQL pour l'analyse de la croissance des utilisateurs, même avec des données manquantes ?
Obtenir toutes les dates d'une plage dans MySQL, même avec des enregistrements manquants
Dans une base de données utilisateur, on peut rencontrer le besoin de créer des graphiques illustrant la croissance de la base d’utilisateurs. Une requête couramment utilisée est :
SELECT DATE(datecreated), count(*) AS number FROM users WHERE DATE(datecreated) > '2009-06-21' AND DATE(datecreated) <= DATE(NOW()) GROUP BY DATE(datecreated) ORDER BY datecreated ASC
Bien que cette requête récupère les informations souhaitées, elle omet les dates auxquelles aucun utilisateur n'a été enregistré. Pour résoudre ce problème, une solution utilisant un calendrier dynamique peut être mise en œuvre. Voici comment :
select * from ( select date_add('2003-01-01 00:00:00.000', INTERVAL n5.num*10000+n4.num*1000+n3.num*100+n2.num*10+n1.num DAY ) as date from (select 0 as num union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) n1, (select 0 as num union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) n2, (select 0 as num union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) n3, (select 0 as num union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) n4, (select 0 as num union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) n5 ) a where date >'2011-01-02 00:00:00.000' and date < NOW() order by date
Ce calendrier dynamique génère des dates dans une plage spécifiée, permettant aux dates sans base d'utilisateurs d'être incluses dans les résultats. En ajustant les limites de date et en appliquant la formule à votre structure de données spécifique, vous pouvez générer un graphique qui reflète avec précision la croissance de la base d'utilisateurs, même pendant les périodes d'inactivité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!