ich ein Datenbankschema haben, die der folgenden ähnelt:Algorithmus Beratung für maximale Elemente innerhalb eines Zeitraums zu finden
| 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
Ich möchte eine Abfrage erzeugen, die die maximale Anzahl der zurückgibt ein Benutzer einige führt Aktion innerhalb eines Zeitraums. Zum Beispiel, wie lange ist die maximale Anzahl von Malen, die Benutzer 111 den Hund gegangen ist, bei einer Zeitspanne von 5 Tagen? Die naheliegendste Lösung wäre, an einem beliebigen Nullpunkt zu beginnen und jeden Tag vorwärts zu gehen, wobei 5 Tage auf dem Weg summiert werden und dann die maximale Summe aller 5-Tage-Fenster genommen wird. Der Ansatz erscheint jedoch unglaublich teuer.
Ich würde mich über Ihre Vorschläge freuen.
EDIT 1:
Danke für die Kommentare/Antworten. Um zu antworten: - Ich benutze mySQL v5.0 - Es könnte eine beliebige Anzahl von Ereignissen pro Tag (pro Zeitraum wirklich) - @Paulo Santos: Danke, aber wie der Kommentar darauf hinweist, muss ich finden das Fenster, das die meisten Ergebnisse liefert, kann das Fenster selbst gleiten. - @Mark: Das sieht nach einer interessanten Lösung aus, obwohl ich mich erinnere, dass mySQL das Sichern oder Springen von Cursorn nicht unterstützt.
- @orbMan: Das sieht vielversprechend aus. Ich verstehe es noch nicht ganz, aber ich werde es heute Abend versuchen. - @mjv: eine weitere vielversprechende Lösung. sieht auch kompliziert aus, aber ich werde es ein anderes Aussehen geben
danke nochmal!
Verwenden Sie einen DBMS, auf dem SQL oder ist es eine Flat File Quelle oder so etwas unterstützt, die keine Abfragesprache haben? – AxelEckenberger
Kann es nur 0 oder ein Ereignis pro Tag geben? –