Ho un problema complesso che sembra essere banale a prima vista:Quanti utenti attivi distinti ho avuto su una finestra di 90 giorni?
- per una finestra determinata 90 giorni, il numero di utenti attivi distinti avevo?
La tabella userò per interrogare questo è la tabella di accesso (ospitato in Redshift), ed ha una data con il logintime e usertoken come l'identificativo utente.
Ogni volta che voglio rispondere a questa per un solo giorno, la query è semplice e lineare:
select count (distinct usertoken)
from logins
where datediff('d',logintime,getdate()) <= 90
Il problema diventa complesso, perché voglio avere questo in una tabella con il numero per ogni determinata data.
07/07 100k
07/06 98k
07/05 99k
07/04 101k
(...)
funzioni della finestra non mi aiuti, perché ho bisogno di contare distinti, e questo non è possibile in una funzione finestra.
Per quanto ne so, non c'è modo di ripetere in una query SQL.
Come devo fare questo?
Si prega di approfondire "ogni data". Passi il limite inferiore e superiore per l'intervallo di tempo? O una serie di date casuali? Possono esserci voci duplicate per un singolo utente nello stesso giorno? Quanto è grande il tuo tavolo? Numero di righe? Definizione di byte per riga/tabella. –