sql >> Database >  >> RDS >> Mysql

Cumulatief totaal aantal gebruikers per dag in MySQL krijgen

Dagelijks cumulatief totaal aantal gebruikers is een zeer nuttige KPI-statistiek voor het analyseren van gebruikersgroei, voor elk bedrijf. Aangezien er echter geen ingebouwde functie is om het lopende totaal in MySQL te berekenen, volgt hier de SQL-query om het cumulatieve totale aantal gebruikers per dag te krijgen, ook wel bekend als voortschrijdende som op datum of lopend totaal van gebruikers.

Hoe u een cumulatief totaal aantal gebruikers per dag in MySQL kunt krijgen

Hier zijn de stappen om het cumulatieve totale aantal gebruikers per dag in MySQL te krijgen. Stel dat u de volgende tabel users(date_joined,user_id) heeft die alle gebruikers-ID's bevat met hun datum van registratie/aanmelding/lidmaatschap voor uw bedrijf.

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

Eerst kijken we naar een SQL-query om het dagelijkse aantal aanmeldingen te berekenen

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

Vervolgens is hier de SQL-query om het cumulatieve totale aantal gebruikers per dag in MySQL te krijgen. We zullen de bovenstaande SQL gebruiken als een subquery om het totaal in SQL te krijgen.

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

In de bovenstaande query stellen we een tijdelijke variabele csum in op 0. Vervolgens gebruiken we deze voor elke rij om de cumulatieve som van gebruikers te berekenen en op te slaan.

Nadat u het cumulatieve totale aantal gebruikers per dag in MySQL hebt gekregen, kunt u dit in een lijndiagram of dashboard plotten met behulp van een rapportagetool zoals Ubiq en deze delen met uw team. Hier is een lijndiagram gemaakt met Ubiq.

Als u een voorwaardelijk lopend totaal in MySQL wilt krijgen, kunt u een WHERE-clausule in de subquery toevoegen, afhankelijk van uw vereisten.

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;

U kunt de bovenstaande SQL-query eenvoudig wijzigen om het totale aantal gebruikers per week, maand, kwartaal en jaar te berekenen. Laten we ze een voor een bekijken. We gebruiken de functie DATE_FORMAT om gemakkelijk kolommen voor week, maand vanaf de datum te krijgen.

Bonus Lezen:Hoe de inkomsten in MySQL te berekenen

Hoe u een cumulatief totaal aantal gebruikers per week in MySQL kunt krijgen

Hier is de SQL-query om het totale aantal gebruikers per week in MySQL te krijgen. In de SQL-query om het cumulatieve totale aantal gebruikers per dag te krijgen, hoeft u alleen de aggregatiefunctie in de subquery te wijzigen, van date(date_joined) naar 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;

In de bovenstaande query kunt u ook de WEEK-functie gebruiken in plaats van DATE_FORMAT, dat wil zeggen, WEEK(date_joined) gebruiken in plaats van DATE_FORMAT(date_joined,'%U')

Bonus lezen:hoe u records van de huidige maand in MySQL kunt krijgen

Hoe u een cumulatief totaal aantal gebruikers per maand in MySQL kunt krijgen

Hier is de SQL-query om het cumulatieve totale aantal gebruikers per maand in MySQL te krijgen. In de SQL-query om het cumulatieve totale aantal gebruikers per dag te krijgen, hoeft u alleen de aggregatiefunctie in de subquery te wijzigen, van date(date_joined) naar 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;

Bonus lezen:hoe u verkoopgegevens van de laatste 3 maanden in MySQL kunt krijgen

Hoe u een cumulatief totaal aantal gebruikers per kwartaal in MySQL kunt krijgen

Hier is de SQL-query om het cumulatieve totale aantal gebruikers per kwartaal in MySQL te krijgen. In de SQL-query om het cumulatieve totale aantal gebruikers per dag te krijgen, hoeft u alleen de aggregatiefunctie in de subquery te wijzigen, van date(date_joined) tot kwartaal(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;

Hoe u een cumulatief totaal aantal gebruikers per jaar in MySQL kunt krijgen

Hier is de SQL-query om het cumulatieve totale aantal gebruikers per jaar in MySQL te krijgen. In de SQL-query om het cumulatieve totale aantal gebruikers per dag te krijgen, hoeft u alleen de aggregatiefunctie in de subquery te wijzigen, van date(date_joined) tot jaar(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;

Dat is het! U kunt de bovenstaande SQL-query's proberen om het cumulatieve totale aantal gebruikers per dag in MySQL te krijgen. Als u grafieken, dashboards en rapporten wilt maken vanuit de MySQL-database, kunt u Ubiq proberen. We bieden een gratis proefperiode van 14 dagen.

  1. SQLite JSON_REMOVE()

  2. Unitils en DBMaintainer - hoe kan ik ze laten werken met meerdere gebruikers/schema's?

  3. Fix "ERROR 1136 (21S01):Kolomtelling komt niet overeen met waardetelling in rij 2" bij gebruik van de VALUES-instructie in MySQL

  4. Gem. inconsistentie float