J'ai un schéma de base de données qui est similaire à ce qui suit:conseils de l'algorithme pour trouver des articles maximum dans une période de temps
| 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
Je voudrais produire une requête qui renvoie le nombre de fois qu'un utilisateur effectue une action dans une période de temps. Par exemple, compte tenu d'une période de 5 jours, quel est le nombre maximum de fois que l'utilisateur 111 a marché avec le chien? La solution la plus évidente serait de commencer à un point zéro et avancer chaque jour, en additionnant des périodes de 5 jours en cours de route, puis en prenant le total maximum de toutes les fenêtres de 5 jours. l'approche semble cependant incroyablement coûteuse.
J'apprécierais toutes les suggestions que vous pourriez avoir.
EDIT 1:
Merci pour les commentaires/réponses. Pour répondre: - J'utilise mySQL v5.0 - Il pourrait y avoir un certain nombre d'événements par jour (pour toute période de temps vraiment) - @Paulo Santos: merci, mais comme le remarque le point, je dois trouver la fenêtre qui produit le plus de résultats, la fenêtre elle-même peut glisser. - @Mark: cela ressemble à une solution intéressante, bien que je me rappelle avoir lu que mySQL ne supporte pas les curseurs de sauvegarde ou de saut.
- @orbMan: cela semble prometteur. Je ne comprends pas encore tout à fait, mais je vais essayer ce soir. - @mjv: une autre solution prometteuse. semble également compliqué, mais je vais donner un autre coup d'oeil
merci encore!
Utilisez-vous un SGBD qui prend en charge SQL ou est-il une source de fichier plat ou quelque chose comme ça, qui ne dispose pas d'un langage de requête? – AxelEckenberger
Peut-il y avoir seulement zéro ou un événement par jour? –