ho uno schema di database che è simile al seguente:consiglio algoritmo per trovare articoli massimo entro un periodo di tempo
| User | Event | Date
|--------|---------------|------
| 111 | Walked dog | 2009-10-1
| 222 | Walked dog | 2009-10-2
| 333 | Fed Fish | 2009-10-5
| 222 | Did Laundry | 2009-10-6
| 111 | Fed Fish | 2009-10-7
| 111 | Walked dog | 2009-10-18
| 222 | Walked dog | 2009-10-19
| 111 | Fed Fish | 2009-10-21
vorrei produrre una query che restituisce il numero massimo di volte che un utente esegua alcune azione entro un periodo di tempo. Ad esempio, dato un periodo di tempo di 5 giorni, qual è il numero massimo di volte in cui l'utente ha calpestato il cane?
La soluzione più ovvia sarebbe iniziare in un punto zero e andare avanti di ogni giorno, riassumendo periodi di 5 giorni lungo la strada, quindi prendendo il totale massimo tra tutte le finestre di 5 giorni. tuttavia l'approccio sembra incredibilmente costoso.
Apprezzerei tutti i suggerimenti si possono avere.
EDIT 1:
Grazie per i commenti/risposte. Per rispondere: - sto usando mySQL v5.0 - Ci potrebbe essere un qualsiasi numero di eventi al giorno (per un periodo di tempo davvero) - @Paulo Santos: grazie, ma, come il commento sottolinea, ho bisogno di trovare la finestra che produce il maggior numero di risultati, la finestra stessa può scorrere. - @Mark: sembra una soluzione interessante, anche se ricordo di aver letto che mySQL non supporta il backup o il salto avanti dei cursori.
- @orbMan: sembra promettente. Non lo capisco ancora del tutto, ma ci proveremo stasera. - @mjv: un'altra soluzione promettente. guarda anche complicato, ma darò un altro sguardo
grazie ancora!
Si sta utilizzando un DBMS che supporta SQL o è una fonte di file flat o qualcosa del genere, che non ha un linguaggio di query? – AxelEckenberger
Può esserci solo zero o un evento al giorno? –