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

Sådan får du kumulative samlede brugere pr. dag i MySQL

Daglige kumulative samlede brugere er en meget nyttig KPI-måling til at analysere brugervækst for enhver virksomhed. Men da der ikke er nogen indbygget funktion til at beregne løbende total i MySQL, er her SQL-forespørgslen til at få kumulative samlede brugere pr. dag, også kendt som rullende sum efter dato eller løbende antal brugere.

Sådan får du kumulativt antal brugere pr. dag i MySQL

Her er trinene til at få kumulative samlede brugere pr. dag i MySQL. Lad os sige, at du har følgende tabel users(date_joined,user_id) der indeholder alle bruger-id'erne med deres dato for registrering/tilmelding/tilmelding til din virksomhed.

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

Først ser vi på en SQL-forespørgsel for at beregne det daglige antal tilmeldinger

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

Dernæst er her SQL-forespørgslen for at få kumulative samlede brugere pr. dag i MySQL. Vi vil bruge ovenstående SQL som en underforespørgsel for at få kørende total i 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 |
+-------------+-----------+-------------+

I ovenstående forespørgsel sætter vi en midlertidig variabel csum til 0. Derefter bruger vi den for hver række til at beregne og gemme den kumulative sum af brugere.

Når du har fået kumulative samlede brugere pr. dag i MySQL, kan du plotte det på et linjediagram eller dashboard ved hjælp af et rapporteringsværktøj som Ubiq og dele det med dit team. Her er et linjediagram oprettet ved hjælp af Ubiq.

Hvis du ønsker at få en betinget løbende total i MySQL, så kan du tilføje en WHERE-klausul i underforespørgslen efter dit krav.

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;

Du kan nemt ændre ovenstående SQL-forespørgsel for at beregne det samlede antal brugere efter uge, måned, kvartal og år. Lad os se på dem én efter én. Vi vil bruge DATE_FORMAT-funktionen til nemt at få uge, måned fra datokolonner.

Bonus Læs:Sådan beregnes omsætning i MySQL

Sådan får du kumulativt antal brugere pr. uge i MySQL

Her er SQL-forespørgslen for at få kumulative samlede brugere pr. uge i MySQL. I SQL-forespørgslen for at få samlet antal brugere pr. dag, skal du blot ændre aggregeringsfunktionen i underforespørgsel fra date(date_joined) til 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;

I ovenstående forespørgsel kan du også bruge WEEK-funktionen i stedet for DATE_FORMAT, dvs. bruge WEEK(date_joined) i stedet for DATE_FORMAT(date_joined,'%U')

Bonus Læs:Sådan får du optegnelser over den aktuelle måned i MySQL

Sådan får du kumulativt antal brugere pr. måned i MySQL

Her er SQL-forespørgslen for at få kumulative samlede brugere efter måned i MySQL. I SQL-forespørgslen for at få samlet antal brugere pr. dag, skal du blot ændre aggregeringsfunktionen i underforespørgsel fra date(date_joined) til 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 Læs:Sådan får du sidste 3 måneders salgsdata i MySQL

Sådan får du kumulative samlede brugere pr. kvartal i MySQL

Her er SQL-forespørgslen for at få kumulative samlede brugere efter kvartal i MySQL. I SQL-forespørgslen for at få samlet antal brugere pr. dag, skal du blot ændre aggregeringsfunktionen i underforespørgsel fra date(date_joined) til quarter(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;

Sådan får du kumulativt antal brugere pr. år i MySQL

Her er SQL-forespørgslen for at få kumulative samlede brugere efter år i MySQL. I SQL-forespørgslen for at få kumulativt antal brugere pr. dag, skal du blot ændre aggregeringsfunktionen i underforespørgsel fra date(date_joined) til år(dato_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;

Det er det! Du kan prøve ovenstående SQL-forespørgsler for at få kumulative samlede brugere pr. dag i MySQL. Hvis du vil oprette diagrammer, dashboards og rapporter fra MySQL-databasen, kan du prøve Ubiq. Vi tilbyder en 14-dages gratis prøveperiode.

  1. Sådan implementeres Percona Distribution til PostgreSQL for høj tilgængelighed

  2. Kolonne ugyldig i valglisten, fordi den ikke er indeholdt i hverken en aggregeret funktion eller GROUP BY-sætningen

  3. Opret en midlertidig tabel i en SELECT-sætning uden en separat CREATE TABLE

  4. 4 måder at finde rækker, der indeholder store bogstaver i Oracle