Los usuarios totales acumulados diarios son una métrica de KPI muy útil para analizar el crecimiento de usuarios, para cada negocio. Sin embargo, dado que no hay una función integrada para calcular el total acumulado en MySQL, aquí está la consulta SQL para obtener el total acumulado de usuarios por día, también conocido como suma acumulada por fecha o total acumulado de usuarios.
Cómo obtener usuarios totales acumulados por día en MySQL
Estos son los pasos para obtener el total acumulado de usuarios por día en MySQL. Supongamos que tiene la siguiente tabla users(date_joined,user_id) que contiene todos los ID de usuario con su fecha de registro/registro/unión para su negocio.
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 | +-------------+---------+
Primero, miramos una consulta SQL para calcular el número diario de registros
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 | +-------------------+----------------+
A continuación, aquí está la consulta SQL para obtener el total acumulado de usuarios por día en MySQL. Usaremos el SQL anterior como una subconsulta para obtener el total acumulado en 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 | +-------------+-----------+-------------+
En la consulta anterior, establecemos una variable temporal csum en 0. Luego, para cada fila, la usamos para calcular y almacenar la suma acumulada de usuarios.
Después de obtener el total de usuarios acumulados por día en MySQL, puede trazarlo en un gráfico de líneas o panel utilizando una herramienta de informes como Ubiq y compartirlo con su equipo. Aquí hay un gráfico de líneas creado con Ubiq.
Si desea obtener un total acumulado condicional en MySQL, puede agregar una cláusula WHERE en la subconsulta, según sus requisitos.
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;
Puede modificar fácilmente la consulta SQL anterior para calcular el total de usuarios acumulados por semana, mes, trimestre y año. Veámoslos uno por uno. Usaremos la función DATE_FORMAT para obtener fácilmente las columnas de semana y mes a partir de la fecha.
Lectura adicional:Cómo calcular los ingresos en MySQL
Cómo obtener usuarios totales acumulados por semana en MySQL
Aquí está la consulta SQL para obtener el total acumulado de usuarios por semana en MySQL. En la consulta SQL para obtener el total de usuarios acumulados por día, solo necesita cambiar la función de agregación en la subconsulta, desde date(date_joined) a formato_de_fecha(formato_de_fecha,'%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;
En la consulta anterior, también puede usar la función WEEK en lugar de DATE_FORMAT, es decir, use WEEK (date_joined) en lugar de DATE_FORMAT (date_joined, '%U')
Lectura adicional:Cómo obtener registros del mes actual en MySQL
Cómo obtener usuarios totales acumulados por mes en MySQL
Aquí está la consulta SQL para obtener el total acumulado de usuarios por mes en MySQL. En la consulta SQL para obtener el total de usuarios acumulados por día, solo necesita cambiar la función de agregación en la subconsulta, desde date(date_joined) a formato_de_fecha(formato_de_fecha,'%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;
Lectura adicional:Cómo obtener datos de ventas de los últimos 3 meses en MySQL
Cómo obtener usuarios totales acumulados por trimestre en MySQL
Aquí está la consulta SQL para obtener el total acumulado de usuarios por trimestre en MySQL. En la consulta SQL para obtener el total de usuarios acumulados por día, solo necesita cambiar la función de agregación en la subconsulta, desde date(date_joined) al trimestre(formato_de_fecha) .
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;
Cómo obtener usuarios totales acumulados por año en MySQL
Aquí está la consulta SQL para obtener el total acumulado de usuarios por año en MySQL. En la consulta SQL para obtener el total de usuarios acumulados por día, solo necesita cambiar la función de agregación en la subconsulta, desde date(date_joined) al año(formato_de_fecha) .
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;
¡Eso es todo! Puede probar las consultas SQL anteriores para obtener el total acumulado de usuarios por día en MySQL. Si desea crear gráficos, paneles e informes desde la base de datos MySQL, puede probar Ubiq. Ofrecemos una prueba gratuita de 14 días.