Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment obtenir le nombre total d'utilisateurs cumulés par jour dans MySQL

Le nombre total d'utilisateurs cumulés quotidiens est un indicateur de performance clé très utile pour analyser la croissance des utilisateurs, pour chaque entreprise. Cependant, comme il n'y a pas de fonction intégrée pour calculer le total cumulé dans MySQL, voici la requête SQL pour obtenir le nombre total cumulé d'utilisateurs par jour, également connu sous le nom de somme glissante par date ou total cumulé d'utilisateurs.

Comment obtenir le nombre total d'utilisateurs cumulés par jour dans MySQL

Voici les étapes pour obtenir le nombre total d'utilisateurs cumulés par jour dans MySQL. Supposons que vous ayez la table suivante users(date_joined,user_id) qui contient tous les identifiants d'utilisateurs avec leur date d'inscription/d'inscription/d'adhésion à votre entreprise.

mysql> create table users(date_joined date,user_id int);

mysql> insert into users(date_joined,user_id)
       values('2020-04-28',213),
       ('2020-04-28',214),
       ('2020-04-30',215),
       ('2020-04-28',216),
       ('2020-04-28',217),
       ('2020-04-30',218),
       ('2020-04-28',219),
       ('2020-04-28',220),
       ('2020-04-30',221),
       ('2020-05-01',222),
       ('2020-05-01',222),
       ('2020-05-01',223),
       ('2020-05-04',224),
       ('2020-05-04',225),
       ('2020-05-04',226),
       ('2020-05-04',226),
       ('2020-05-04',227),
       ('2020-05-04',228),
       ('2020-05-05',229),
       ('2020-05-05',230),
       ('2020-05-05',231),
       ('2020-05-05',232),
       ('2020-05-06',233),
       ('2020-05-06', 234);

mysql> select * from users;
+-------------+---------+
| date_joined | user_id |
+-------------+---------+
| 2020-04-28  |     213 |
| 2020-04-28  |     214 |
| 2020-04-30  |     215 |
| 2020-04-28  |     216 |
| 2020-04-28  |     217 |
| 2020-04-30  |     218 |
| 2020-04-28  |     219 |
| 2020-04-28  |     220 |
| 2020-04-30  |     221 |
| 2020-05-01  |     222 |
| 2020-05-01  |     222 |
| 2020-05-01  |     223 |
| 2020-05-04  |     224 |
| 2020-05-04  |     225 |
| 2020-05-04  |     226 |
| 2020-05-04  |     226 |
| 2020-05-04  |     227 |
| 2020-05-04  |     228 |
| 2020-05-05  |     229 |
| 2020-05-05  |     230 |
| 2020-05-05  |     231 |
| 2020-05-05  |     232 |
| 2020-05-06  |     233 |
| 2020-05-06  |     234 |
+-------------+---------+

Tout d'abord, nous examinons une requête SQL pour calculer le nombre quotidien d'inscriptions

mysql> select date(date_joined),count(user_id) 
       from users 
       group by date(date_joined);
+-------------------+----------------+
| date(date_joined) | count(user_id) |
+-------------------+----------------+
| 2020-04-28        |        6       |
| 2020-04-30        |        3       |
| 2020-05-01        |        3       |
| 2020-05-04        |        6       |
| 2020-05-05        |        4       |
| 2020-05-06        |        2       |
+-------------------+----------------+

Ensuite, voici la requête SQL pour obtenir le nombre total d'utilisateurs cumulés par jour dans MySQL. Nous utiliserons le SQL ci-dessus comme sous-requête pour obtenir le total cumulé en SQL.

mysql> set @csum := 0;

mysql> select date_joined,new_users, (@csum := @csum + new_users) as total_users
            from (
             select date(date_joined) as date_joined,count(user_id) as new_users
             from users
             group by date(date_joined)
            ) as temp
            order by date_joined;
+-------------+-----------+-------------+
| date_joined | new_users | total_users |
+-------------+-----------+-------------+
| 2020-04-28  |         6 |           6 |
| 2020-04-30  |         3 |           9 |
| 2020-05-01  |         3 |          12 |
| 2020-05-04  |         6 |          18 |
| 2020-05-05  |         4 |          22 |
| 2020-05-06  |         2 |          24 |
+-------------+-----------+-------------+

Dans la requête ci-dessus, nous définissons une variable temporaire csum sur 0. Ensuite, pour chaque ligne, nous l'utilisons pour calculer et stocker la somme cumulée des utilisateurs.

Après avoir obtenu le nombre total d'utilisateurs cumulés par jour dans MySQL, vous pouvez le tracer sur un graphique linéaire ou un tableau de bord à l'aide d'un outil de création de rapports comme Ubiq et le partager avec votre équipe. Voici un graphique linéaire créé à l'aide d'Ubiq.

Si vous souhaitez obtenir un total cumulé conditionnel dans MySQL, vous pouvez ajouter une clause WHERE dans la sous-requête, selon vos besoins.

mysql> set @csum := 0;
mysql> select date_joined,new_users, (@csum := @csum + new_users) as total_users
            from (
             select date(date_joined) as date_joined,count(user_id) as new_users
             from users 
             WHERE <condition>
             group by date(date_joined)
            ) as temp
            order by date_joined;

Vous pouvez facilement modifier la requête SQL ci-dessus pour calculer le nombre total d'utilisateurs cumulés par semaine, mois, trimestre et année. Examinons-les un par un. Nous utiliserons la fonction DATE_FORMAT pour obtenir facilement les colonnes semaine, mois à partir de la date.

Lecture bonus :comment calculer les revenus dans MySQL

Comment obtenir le nombre total d'utilisateurs cumulés par semaine dans MySQL

Voici la requête SQL pour obtenir le nombre total d'utilisateurs cumulés par semaine dans MySQL. Dans la requête SQL pour obtenir le nombre total cumulé d'utilisateurs par jour, il vous suffit de modifier la fonction d'agrégation dans la sous-requête, à partir de date(date_joined) à date_format(date_format,'%U') .

mysql> set @csum := 0;
mysql> select date_joined,new_users, (@csum := @csum + new_users) as total_users
            from (
             select date_format(date_joined,'%U') as date_joined,
               count(user_id) as new_users
             from users
             group by date_format(date_joined,'%U')
            ) as temp
            order by date_joined;

Dans la requête ci-dessus, vous pouvez également utiliser la fonction WEEK au lieu de DATE_FORMAT, c'est-à-dire utiliser WEEK(date_joined) au lieu de DATE_FORMAT(date_joined,'%U')

Lecture bonus :Comment obtenir les enregistrements du mois en cours dans MySQL

Comment obtenir le nombre total d'utilisateurs cumulés par mois dans MySQL

Voici la requête SQL pour obtenir le nombre total d'utilisateurs cumulés par mois dans MySQL. Dans la requête SQL pour obtenir le nombre total cumulé d'utilisateurs par jour, il vous suffit de modifier la fonction d'agrégation dans la sous-requête, à partir de date(date_joined) à date_format(date_format,'%b') .

mysql> set @csum := 0;

mysql> select date_joined,new_users, (@csum := @csum + new_users) as total_users
            from (
             select date_format(date_joined,'%b') as date_joined,
               count(user_id) as new_users
             from users
             group by date_format(date_joined,'%b')
            ) as temp
            order by date_joined;

Lecture bonus :Comment obtenir les données de vente des 3 derniers mois dans MySQL

Comment obtenir le nombre total d'utilisateurs cumulés par trimestre dans MySQL

Voici la requête SQL pour obtenir le nombre total d'utilisateurs cumulés par trimestre dans MySQL. Dans la requête SQL pour obtenir le nombre total cumulé d'utilisateurs par jour, il vous suffit de modifier la fonction d'agrégation dans la sous-requête, à partir de date(date_joined) au trimestre(date_format) .

mysql> set @csum := 0;
mysql> select date_joined,new_users, (@csum := @csum + new_users) as total_users
            from (
             select quarter(date_joined) as date_joined,
               count(user_id) as new_users
             from users
             group by quarter(date_joined)
            ) as temp
            order by date_joined;

Comment obtenir le nombre total d'utilisateurs cumulés par an dans MySQL

Voici la requête SQL pour obtenir le nombre total d'utilisateurs cumulés par année dans MySQL. Dans la requête SQL pour obtenir le nombre total cumulé d'utilisateurs par jour, il vous suffit de modifier la fonction d'agrégation dans la sous-requête, à partir de date(date_joined) à année(date_format) .

mysql> set @csum := 0;
mysql> select date_joined,new_users, (@csum := @csum + new_users) as total_users
            from (
             select year(date_joined) as date_joined,
               count(user_id) as new_users
             from users
             group by year(date_joined)
            ) as temp
            order by date_joined;

C'est ça! Vous pouvez essayer les requêtes SQL ci-dessus pour obtenir le nombre total d'utilisateurs cumulés par jour dans MySQL. Si vous souhaitez créer des graphiques, des tableaux de bord et des rapports à partir de la base de données MySQL, vous pouvez essayer Ubiq. Nous offrons un essai gratuit de 14 jours.