estoy casi enojando al tratar de resolver este problema:consulta SQL para contar los usuarios registrados por día
En mis usuarios de la aplicación pueden registrar y eliminar themselfes. La fecha de creación y la fecha de eliminación se conservan en la base de datos como una marca de tiempo. Necesito saber por cada día en un rango de días, cuántos usuarios registrados y no eliminados existieron en ese día.
Entonces, si tengo 10 usuarios existentes en 2012-02-01, un usuario que eliminó la cuenta el 2012-02-03, tres usuarios que se registraron el 2012-02-04 y dos usuarios eliminaron el 2012-02- 06, y consultar el número total de usuarios registrados desde 2012-02-01 hasta 2012-02-07 me gustaría conseguir un resultado como este:
day total_users 2012-02-01 10 2012-02-02 10 2012-02-03 9 2012-02-04 12 2012-02-05 12 2012-02-06 10 2012-02-07 10
Así es como mi tabla de usuario simplificada se ve así:
user_id, nombre_usuario, created_at, deleted_at
no es ningún problema para obtener el número o f registrada y no los usuarios eliminados por un día específico (aquí 2012-02-01, que conseguirme un 10 en mi ejemplo):
select application.application_id as application_id, count(user.user_id) as user_total
from application, user
where application.application_id = user.application_id
and date(user.created_at) <= '2012-02-01'
and ((date(user.deleted_at) > '2012-02-01') or (user.deleted_at is null))
¿Quién tiene ni idea de cómo puedo crear una consulta (sin un cursor) que tendrá mi resultado esperado? Mi base de datos es MySQL 5.0.51 en Debian.
Gracias de antemano Marcus
Muchas gracias, ¡esto funciona a la perfección! Solo tuve que reemplazar la "i" en cada línea con t0, t1, etc., creo que esta es la culpa de mi antiguo servidor MySQL. –
@MarcusMuench: Vaya, mi culpa. He corregido la consulta, gracias. –