Tengo un esquema de base de datos que es similar al siguiente:consejos algoritmo para la búsqueda de elementos máximos dentro de un período de tiempo
| 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
me gustaría producir una consulta que devuelve el número máximo de veces que un usuario realiza alguna acción dentro de un período de tiempo. Por ejemplo, dado un período de tiempo de 5 días, ¿cuál es la cantidad máxima de veces que el usuario 111 caminó al perro?
La solución más obvia sería comenzar en un punto cero y avanzar cada día, sumando periodos de 5 días en el camino, y luego sacando el total máximo de todas las ventanas de 5 días. el enfoque parece increíblemente costoso sin embargo.
Agradecería cualquier sugerencia que pueda tener.
EDIT 1:
Gracias por los comentarios/respuestas. Para responder: - Estoy usando mySQL v5.0 - Puede haber cualquier cantidad de eventos por día (por cualquier período de tiempo realmente) - @Paulo Santos: gracias, pero al igual que el comentario señala, tengo que encontrar la ventana que produce la mayoría de los resultados, la ventana en sí misma puede deslizarse. - @Mark: parece una solución interesante, aunque recuerdo haber leído que mySQL no admite el respaldo o el salto de cursores.
- @orbMan: esto parece prometedor. Todavía no lo entiendo completamente, pero intentaré esto esta noche. - @mjv: otra solución prometedora. también parece complicado, pero le daré otra apariencia
gracias de nuevo!
¿Está usando un DBMS que soporta SQL o es un origen de archivo plano o algo por el estilo, que no tiene un lenguaje de consulta? – AxelEckenberger
¿Solo puede haber cero o un evento por día? –