Die folgende Benutzerverlaufstabelle enthält einen Datensatz für jeden Tag, an dem ein bestimmter Benutzer auf eine Website zugegriffen hat (innerhalb von 24 Stunden UTC). Es hat viele tausend Datensätze, aber nur einen Datensatz pro Tag und Benutzer. Wenn der Benutzer an diesem Tag nicht auf die Website zugegriffen hat, wird kein Datensatz generiert.
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 in dieser Tabelle mit guter Leistung , die mir sagt, welche Benutzer-IDs für (n) aufeinanderfolgende Tage auf die Website zugegriffen haben, ohne einen Tag zu verpassen.
Mit anderen Worten, wie viele Benutzer haben (n) Datensätze in dieser Tabelle mit aufeinander folgenden (Tag vor oder Tag nach) Daten ? Wenn ein Tag in der Sequenz fehlt, ist die Sequenz unterbrochen und sollte bei 1 erneut gestartet werden. Wir suchen Benutzer, die hier eine kontinuierliche Anzahl von Tagen ohne Lücken erreicht haben.
Jede Ähnlichkeit zwischen dieser Abfrage und einem bestimmten Stapelüberlauf-Abzeichen ist natürlich rein zufällig. :)