Usuario
Cohortes SQL

Pregunta
-
Hola!
Tengo esta tabla asi
date userid m1 m2 m3 m4 m5 m6 m7........ 2018-08-28 E8:D1:1B:08:FC:95 0 0 0 1 0 0 0 2018-09-06 F9:D1:1C:9M:FS:98 1 0 2 0 1 1 2 2018-09-11 A0:64:8F:B7:2D:A8 0 0 1 0 0 0 1 2017-10-18 a0:64:8f:28:8d:44 0 1 4 3 1 1 2 2017-09-25 e8:d1:1b:bc:4e:d4 1 1 1 0 1 2 0
Y esto intentando programarlo en bigquery que es con lenguaje sql y conseguir algo tal que asi:
month m0 m1 m2 m3 m4 m5 m6 .... 1 6 3 6 3 10 5 4 2 6 6 8 10 5 3 0 3 3 5 1 2 2 0 0 ... ...........................
Pero no tengo ni idea de como hacerlo ya que no consigo que a partir del segudno mes sepa cuales son los usuarios que vuelven a usar la app. Hay datos desde jul17 hasta abril18
Gracias!!
- Editado Mo0123 viernes, 22 de junio de 2018 8:58
Todas las respuestas
-
Hola MoO123:
Te cuento lo que yo he entendido de tu propuesta y como yo veo la solución.
Lo primero, aunque tu sintaxis sea Bigquery, le he echado un ojo por alto y como mucho tienes que cambiar la funcion de obtención del mes. El resto te es válido.
/* Planteamiento del escenario */ create table resumen (fecha date, userid int, m1 int, m2 int, m3 int, m4 int, m5 int, m6 int, m7 int) /* el campo userid para mi facilidad lo he definido como int, partiendo de la base que es un identificador único por usuario */ go insert into resumen (fecha, userid, m1,m2, m3, m4, m5, m6,m7)
values
('20180828',1,0,0,0,1,0,0,0),
('20180906',2,0,0,0,1,0,0,0),
('20180911',3,1,0,0,1,0,0,0),
('20170725',4,0,0,2,0,0,0,0),
('20170724',1,0,0,0,1,0,0,0),
('20170806',1,0,0,1,10,4,0,0),
('20170923',2,0,0,0,0,0,0,0),
('20171028',1,2,1,0,1,0,0,0),
('20171021',3,0,0,0,2,0,2,0),
('20171115',1,0,0,0,1,0,0,3),
('20180828',1,0,0,0,1,0,0,0),
('20180101',2,0,0,0,1,0,0,0),
('20180211',3,1,0,0,1,0,0,0),
('20170725',4,0,0,2,0,0,0,0),
('20170724',1,0,0,0,1,0,0,0),
('20170806',1,0,0,1,10,4,0,0),
('20170923',2,0,0,0,0,0,0,0),
('20171028',1,2,1,0,1,0,0,0),
('20171021',3,0,0,0,2,0,2,0)
/*he insertado algún dato más, pero en definitivas cuentas es lo mismo.*/
go
select (datepart(month,r.fecha) +((year(r.fecha)-2017)*12)-6) as mes, userid, sum(m1)as m1, sum(m2) as m2, sum(m3) as m3, sum(m4) as m4, sum(m5) as m5, sum(m6) as m6, sum(m7) as m7
from resumen r
group by datepart(month,r.fecha), userid, year(r.fecha)
order by mes
La consulta, la primera parte es que tienes que extraer el mes de la fecha, y para que empiece en 2017 julio como mes uno le extraigo el año, le resto 2017 y lo que salga lo multiplico por 12 meses y finalmente le resto 6 para que el mes de julio sea 1.
Luego el userid, que es el campo que tiene por lo que yo he entendido que mostrar el resumen de sus movimientos por meses, y a partir de ahí, sumo todoas filas, que sean de cada usuario por cada mes, por cada año. Ordenado por mes.
Supongo que más o menos esto.
Espero te ayude
-
Hola!!
Gracias! de verdad tenia dudas si los datos vienen de una tabla seria entonces la parte de "create table" seria un select .... from mitabla? es que es lo que tengo duda porque como tengo la base de datos con unos 300 mil registros de ese modo definir meses o algo asi es un lio al menos para mi..
Gracias!
-