Mysql Cohort Analysis users/sessions

MonkeyBoogie

Hola, posteo para ver si me podeis echar una mano con un problema que tengo para hacer un cohort analysis, ya que llevo un rato con ello y no me sale.

Tengo una base de datos de usuarios, donde tengo 2 tablas "users" y "sessions". La tabla "users" tiene el campo "created_at" y la tabla "sessions" tiene el campo "start_at". Lo que quiero calcular, es que me diga cuantos usuarios que se han registrado en una semana en concreto, y cuantos de los registrados han vuelto a conectarse en los siguientes 7,14,21 días

Un ejemplo de lo que digo.

Semana 14
Usuarios registrados: 100
Cuantos de esos 100 se han conectado en los siguientes 7 días? : 97
Cuantos de esos 100 se han conectado en los siguientes 14 días? : 56
Cuantos de esos 100 se han conectado en los siguientes 21 días? : 32

La formula que estoy empleando es la siguiente:

select
week(from_unixtime(up.registered_at)) week,count(distinct up.id) registrados,
coalesce(count(distinct(CASE WHEN datediff(from_unixtime(up.registered_at),from_unixtime(us.start_at)) >=0 AND datediff(from_unixtime(up.registered_at),from_unixtime(us.start_at)) <= 7 then up.id end))) as 0to7,
coalesce(count(distinct(CASE WHEN datediff(from_unixtime(up.registered_at),from_unixtime(us.start_at)) >=8 AND datediff(from_unixtime(up.registered_at),from_unixtime(us.start_at)) <= 14 then up.id end))) as 8to14,
coalesce(count(distinct(CASE WHEN datediff(from_unixtime(up.registered_at),from_unixtime(us.start_at)) >=15 AND datediff(from_unixtime(up.registered_at),from_unixtime(us.start_at)) <= 21 then up.id end))) as 15to21
from ftmanager_userprofile up
left join ftmanager_usersession us
on up.id=us.user_id
group by 1
limit 100


El problema viene que solo me calcula los registrados de dicha semana y cuantos se conectaron dentro de esos 7 días.. pero el resto de semanas me sale en todos los campos "0".

Alguna ayuda please?

Gracias

Phatality

He hecho algñun que otro report de este palo, cuando vuelva a casa cuento.

Usuarios habituales

  • Phatality
  • MonkeyBoogie