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.