SQL, um minimale sequentielle Zugriffstage zu bestimmen?

Folgende Benutzer History-Tabelle enthält einen Datensatz für jeden Tag einen bestimmten Benutzer zugegriffen hat eine website (in einem 24-Stunden UTC-Zeit). Es hat viele Tausende von Datensätzen, aber nur einen Datensatz pro Tag pro Benutzer. Wenn der Benutzer nicht auf die website zugegriffen, die für diesen Tag kein Datensatz generiert werden.

Id UserId CreationDate 
------ ------ ------------ 
750997 12 2009-07-07 18:42:20.723 
750998 15 2009-07-07 18:42:20.927 
751000 19 2009-07-07 18:42:22.283 

Was ich Suche ist eine SQL-Abfrage auf diese Tabelle mit einer guten Leistung, das mir sagt, welche Benutzer-IDS zugegriffen haben, die website für (n) Tage ohne fehlt ein Tag.

In anderen Worten, , wie viele Benutzer (n) Datensätze in dieser Tabelle sequentiell (Tag vor oder am Tag danach) Termine? Wenn jeder Tag fehlen, ist die Reihenfolge, die Sequenz ist defekt und sollte neu starten wieder bei 1; wir suchen für Benutzer, die erreicht haben, eine kontinuierliche Anzahl der Tage, die hier mit keine Lücken.

Jede ähnlichkeit zwischen dieser Abfrage und eine Besondere Stack-Überlauf Abzeichen ist rein zufällig natürlich.. 🙂

Kommentar zu dem Problem - Öffnen
Ich hab den enthusiast-Abzeichen nach 28(<30) Tagen Mitgliedschaft. Mystik. Kommentarautor: Kirill V. Lyadvinsky
Sind Sie das Datum als UTC gespeichert? Wenn ja, was passiert, wenn ein CA ansässig besucht die Website, um 8 Uhr morgens, einen Tag und dann 8 Uhr des folgenden Tages? Obwohl er/Sie besucht an aufeinander folgenden Tagen in der Pacific Time Zone, es würde nicht aufgenommen werden, die als solche in der DB, weil der DB ist die Speicherung von Zeiten als UTC. Kommentarautor: Guy
Jeff/Jarrod - können Sie überprüfen, meta.stackexchange.com/questions/865/... bitte? Kommentarautor: Rob Farley

InformationsquelleAutor der Frage Jeff Atwood | 2009-07-24

Schreibe einen Kommentar