Mysql
 sql >> Database >  >> RDS >> Mysql

Come ottenere utenti totali cumulativi al giorno in MySQL

Il totale giornaliero cumulativo degli utenti è una metrica KPI molto utile per analizzare la crescita degli utenti, per ogni azienda. Tuttavia, poiché non esiste una funzione integrata per calcolare il totale parziale in MySQL, ecco la query SQL per ottenere il totale cumulativo degli utenti al giorno, noto anche come somma mobile per data o totale parziale degli utenti.

Come ottenere utenti totali cumulativi al giorno in MySQL

Ecco i passaggi per ottenere utenti totali cumulativi al giorno in MySQL. Supponiamo che tu abbia la seguente tabella users(date_joined,user_id) che contiene tutti gli ID utente con la loro data di registrazione/iscrizione/adesione alla tua attività.

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 |
+-------------+---------+

Innanzitutto, esaminiamo una query SQL per calcolare il numero giornaliero di iscrizioni

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       |
+-------------------+----------------+

Successivamente, ecco la query SQL per ottenere utenti totali cumulativi al giorno in MySQL. Useremo l'SQL sopra come sottoquery per ottenere il totale in esecuzione in 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 |
+-------------+-----------+-------------+

Nella query precedente, impostiamo una variabile temporanea csum su 0. Quindi per ogni riga la utilizziamo per calcolare e memorizzare la somma cumulativa degli utenti.

Dopo aver ottenuto utenti totali cumulativi al giorno in MySQL, puoi tracciarlo su un grafico a linee o dashboard utilizzando uno strumento di reporting come Ubiq e condividerlo con il tuo team. Ecco un grafico a linee creato utilizzando Ubiq.

Se vuoi ottenere un totale parziale condizionale in MySQL, puoi aggiungere una clausola WHERE nella sottoquery, secondo le tue esigenze.

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;

È possibile modificare facilmente la query SQL di cui sopra, per calcolare gli utenti totali cumulativi per settimana, mese, trimestre e anno. Vediamoli uno per uno. Utilizzeremo la funzione DATE_FORMAT per ottenere facilmente settimana, mese dalle colonne della data.

Bonus Leggi:Come calcolare le entrate in MySQL

Come ottenere utenti totali cumulativi a settimana in MySQL

Ecco la query SQL per ottenere utenti totali cumulativi per settimana in MySQL. Nella query SQL per ottenere utenti totali cumulativi al giorno, devi solo modificare la funzione di aggregazione nella sottoquery, da date(date_joined) a 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;

Nella query precedente, puoi anche utilizzare la funzione WEEK invece di DATE_FORMAT, ovvero usa WEEK(date_joined) invece di DATE_FORMAT(date_joined,'%U')

Bonus Leggi:Come ottenere i record del mese corrente in MySQL

Come ottenere utenti totali cumulativi al mese in MySQL

Ecco la query SQL per ottenere utenti totali cumulativi per mese in MySQL. Nella query SQL per ottenere utenti totali cumulativi al giorno, devi solo modificare la funzione di aggregazione nella sottoquery, da date(date_joined) a formato_data(formato_data,'%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;

Bonus Leggi:Come ottenere i dati sulle vendite degli ultimi 3 mesi in MySQL

Come ottenere utenti totali cumulativi per trimestre in MySQL

Ecco la query SQL per ottenere utenti totali cumulativi per trimestre in MySQL. Nella query SQL per ottenere utenti totali cumulativi al giorno, devi solo modificare la funzione di aggregazione nella sottoquery, da date(date_joined) a 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;

Come ottenere utenti totali cumulativi all'anno in MySQL

Ecco la query SQL per ottenere utenti totali cumulativi per anno in MySQL. Nella query SQL per ottenere utenti totali cumulativi al giorno, devi solo modificare la funzione di aggregazione nella sottoquery, da date(date_joined) a anno(formato_data) .

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;

Questo è tutto! Puoi provare le query SQL di cui sopra per ottenere utenti totali cumulativi al giorno in MySQL. Se vuoi creare grafici, dashboard e report dal database MySQL, puoi provare Ubiq. Offriamo una prova gratuita di 14 giorni.