Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como obter usuários totais cumulativos por dia no MySQL


O total de usuários cumulativos diários é uma métrica de KPI muito útil para analisar o crescimento do usuário, para todos os negócios. No entanto, como não há uma função interna para calcular o total de execução no MySQL, aqui está a consulta SQL para obter o total cumulativo de usuários por dia, também conhecido como soma contínua por data ou total de usuários em execução.


Como obter o total acumulado de usuários por dia no MySQL


Aqui estão as etapas para obter o total cumulativo de usuários por dia no MySQL. Digamos que você tenha a seguinte tabela users(date_joined,user_id) que contém todos os IDs de usuário com a data de registro/inscrição/inscrição para sua empresa.
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 |
+-------------+---------+

Primeiro, analisamos uma consulta SQL para calcular o número diário de inscrições
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       |
+-------------------+----------------+

Em seguida, aqui está a consulta SQL para obter o total cumulativo de usuários por dia no MySQL. Usaremos o SQL acima como uma subconsulta para obter o total de execução no 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 |
+-------------+-----------+-------------+

Na consulta acima, definimos uma variável temporária csum como 0. Então, para cada linha, a usamos para calcular e armazenar a soma cumulativa de usuários.

Depois de obter o total de usuários cumulativos por dia no MySQL, você pode plotá-lo em um gráfico de linhas ou painel usando uma ferramenta de relatório como o Ubiq e compartilhá-lo com sua equipe. Aqui está um gráfico de linhas criado usando o Ubiq.





Se você deseja obter um total de execução condicional no MySQL, pode adicionar uma cláusula WHERE na subconsulta, conforme sua necessidade.
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;



Você pode modificar facilmente a consulta SQL acima, para calcular o total de usuários acumulados por semana, mês, trimestre e ano. Vamos olhar para eles um por um. Usaremos a função DATE_FORMAT para obter facilmente as colunas semana e mês das datas.

Bônus de leitura:Como calcular a receita no MySQL


Como obter o total acumulado de usuários por semana no MySQL


Aqui está a consulta SQL para obter o total de usuários cumulativos por semana no MySQL. Na consulta SQL para obter o total cumulativo de usuários por dia, basta alterar a função de agregação na subconsulta, de date(date_joined) para 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;

Na consulta acima, você também pode usar a função WEEK em vez de DATE_FORMAT, ou seja, use WEEK(date_joined) em vez de DATE_FORMAT(date_joined,'%U')

Bônus de leitura:Como obter registros do mês atual no MySQL


Como obter o total acumulado de usuários por mês no MySQL


Aqui está a consulta SQL para obter o total de usuários cumulativos por mês no MySQL. Na consulta SQL para obter o total cumulativo de usuários por dia, basta alterar a função de agregação na subconsulta, de date(date_joined) para 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;

Bônus de leitura:Como obter dados de vendas dos últimos 3 meses no MySQL


Como obter o total acumulado de usuários por trimestre no MySQL


Aqui está a consulta SQL para obter o total de usuários acumulados por trimestre no MySQL. Na consulta SQL para obter o total cumulativo de usuários por dia, basta alterar a função de agregação na subconsulta, de date(date_joined) para trimestre(data_formato) .
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;


Como obter o total acumulado de usuários por ano no MySQL


Aqui está a consulta SQL para obter o total cumulativo de usuários por ano no MySQL. Na consulta SQL para obter o total cumulativo de usuários por dia, basta alterar a função de agregação na subconsulta, de date(date_joined) para ano(data_formato) .
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;



É isso! Você pode tentar as consultas SQL acima para obter o total cumulativo de usuários por dia no MySQL. Se você deseja criar gráficos, painéis e relatórios do banco de dados MySQL, experimente o Ubiq. Oferecemos um teste gratuito de 14 dias.