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.