Le tableau suivant de l'historique de l'utilisateur contient un enregistrement pour chaque jour où un utilisateur donné a accédé à un site web (dans une période de 24 heures UTC). Il contient plusieurs milliers d'enregistrements, mais seulement un enregistrement par jour et par utilisateur. Si l'utilisateur n'a pas accédé au site web ce jour-là, aucun enregistrement ne sera généré.
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
Ce que je recherche, c'est une requête SQL sur cette table avec de bonnes performances qui m'indique quels sont les utilisateurs qui ont accédé au site web pendant (n) jours consécutifs sans en manquer un seul.
En d'autres termes, combien d'utilisateurs ont (n) enregistrements dans cette table avec des dates séquentielles (jour avant ou jour après). ? S'il manque un jour dans la séquence, celle-ci est interrompue et doit recommencer à 1. Nous recherchons des utilisateurs qui ont atteint un nombre continu de jours sans interruption.
Toute ressemblance entre cette requête et un badge Stack Overflow particulier est une pure coïncidence, bien sûr :)